68#define XML_START_MSG ((const xmlChar *)\
69 "<?xml version=\"1.0\" encoding=\"UTF-8\"?>")
71#define XML_START_MSG_SIZE 38
79#define XML_READER_OPTIONS \
80 (XML_PARSE_RECOVER+XML_PARSE_NOERROR+ \
81 XML_PARSE_NOWARNING+XML_PARSE_NOBLANKS+XML_PARSE_NONET+ \
82 XML_PARSE_XINCLUDE+XML_PARSE_NOCDATA+XML_PARSE_HUGE)
84#define XML_SES_URL "netconf://pdu"
159typedef struct xml_attr_t_ {
193typedef enum xml_nodetyp_t_ {
207typedef struct xml_node_t_ {
299 xmlTextReaderPtr *reader);
313 xmlTextReaderPtr *reader);
329 xmlInputCloseCallback closefn,
331 xmlTextReaderPtr *reader);
347 xmlInputCloseCallback closefn,
349 xmlTextReaderPtr reader);
395 const xmlChar *elname,
474 const xmlChar *attr_name,
475 const xmlChar *attr_val);
494 const xmlChar *attr_qname,
496 const xmlChar *attr_val,
512 const xmlChar *pfix);
527 const xmlChar *pfix);
546 const xmlChar *nsval);
614 const xmlChar *attrname);
631 const xmlChar *attrname);
648 const xmlChar *attrname);
691 const xmlChar *copyFrom);
705 const xmlChar *copyFrom,
728 const xmlChar *appendFrom);
741 const xmlChar *appendFrom,
960 const xmlChar *elname,
963 const xmlChar **badns);
997 const xmlChar *prefix,
999 boolean register_missing,
log_debug_t
The debug level enumerations used in util/log.c.
Definition: log.h:348
status_t
global error return code
Definition: status_enum.h:210
uint16 xmlns_id_t
integer handle for registered namespaces
Definition: xmlns.h:89
status_t xml_consume_node(xmlTextReaderPtr reader, xml_node_t *xmlnode, boolean nserr, boolean adv)
parse function for YIN input
Definition: xml_util.c:2410
char * xml_ch_strndup(const char *copyFrom, uint32 maxlen)
String duplicate for max N chars.
Definition: xml_util.c:1676
status_t xml_reset_reader_for_session(xmlInputReadCallback readfn, xmlInputCloseCallback closefn, void *context, xmlTextReaderPtr reader)
Reset the xmlTextReader for parsing the input of a NETCONF session.
Definition: xml_util.c:423
status_t xml_add_inv_xmlns_attr(xml_attrs_t *attrs, xmlns_id_t ns_id, const xmlChar *pfix, const xmlChar *nsval)
add an xmlns decl to the attribute Queue for an INVALID namespace.
Definition: xml_util.c:1096
xml_attr_t * xml_find_attr(xml_node_t *node, xmlns_id_t nsid, const xmlChar *attrname)
Find an attribute.
Definition: xml_util.c:1290
status_t xml_add_attr(xml_attrs_t *attrs, xmlns_id_t ns_id, const xmlChar *attr_name, const xmlChar *attr_val)
add an attribute to an attribute list
Definition: xml_util.c:830
int xml_strcmp_nosp2(const xmlChar *s1, const xmlChar *s2)
String compare for xmlChar for 2 strings, but completely ignoring whitespace differences.
Definition: xml_util.c:2014
uint32 xml_strcpy(xmlChar *copyTo, const xmlChar *copyFrom)
String copy for xmlChar.
Definition: xml_util.c:1471
xmlChar * xml_strncat(xmlChar *appendTo, const xmlChar *appendFrom, uint32 maxlen)
String concatenate for at most maxlen xmlChars.
Definition: xml_util.c:1607
int xml_stricmp(const xmlChar *s1, const xmlChar *s2)
Case insensitive string compare for xmlChar.
Definition: xml_util.c:1754
const xml_attr_t * xml_find_ro_attr(const xml_node_t *node, xmlns_id_t nsid, const xmlChar *attrname)
Find a read-only attribute.
Definition: xml_util.c:1358
status_t xml_get_reader_from_buff(const xmlChar *buff, xmlTextReaderPtr *reader)
Get a new xmlTextReader for parsing a debug test file.
Definition: xml_util.c:307
void xml_free_node(xml_node_t *node)
Free an xml_node_t struct.
Definition: xml_util.c:246
xmlChar * xml_strcat(xmlChar *appendTo, const xmlChar *appendFrom)
String concatenate for xmlChar.
Definition: xml_util.c:1576
int xml_strcmp(const xmlChar *s1, const xmlChar *s2)
String compare for xmlChar.
Definition: xml_util.c:1717
boolean xml_isspace(uint32 ch)
Check if an xmlChar is a space char.
Definition: xml_util.c:1876
xml_nodetyp_t
only 4 types of nodes returned
Definition: xml_util.h:193
xml_attr_t * xml_find_attr_q(xml_attrs_t *attrs, xmlns_id_t nsid, const xmlChar *attrname)
Find an attribute in a Q.
Definition: xml_util.c:1317
int xml_strcmp_nosp(const xmlChar *s1, const xmlChar *s2)
String compare for xmlChar for 2 strings, but ignoring whitespace differences.
Definition: xml_util.c:1937
boolean xml_docdone(xmlTextReaderPtr reader)
check if the input is completed for a given PDU
Definition: xml_util.c:646
void xml_free_attr(xml_attr_t *attr)
free an attribute
Definition: xml_util.c:795
uint32 xml_strlen(const xmlChar *str)
Get the String len for xmlChar.
Definition: xml_util.c:1395
status_t xml_endnode_match(const xml_node_t *startnode, const xml_node_t *endnode)
check if a specific node is the proper endnode match for a given startnode
Definition: xml_util.c:601
xml_attr_t * xml_get_first_attr(const xml_node_t *node)
get the first attribute in the attrs list, from an xml_node_t param
Definition: xml_util.c:1194
const char * xml_get_node_name(int nodeval)
get the node type according to the xmlElementType enum list in /usr/include/libxml/libxml/tree....
Definition: xml_util.c:480
boolean xml_isspace_str(const xmlChar *str)
Check if an xmlChar string is all whitespace chars.
Definition: xml_util.c:1898
status_t xml_check_ns(xmlTextReaderPtr reader, const xmlChar *elname, xmlns_id_t *id, uint32 *pfix_len, const xmlChar **badns)
Check a namespace during parsing.
Definition: xml_util.c:2212
status_t xml_node_match(const xml_node_t *node, xmlns_id_t nsid, const xmlChar *elname, xml_nodetyp_t nodetyp)
check if a specific node is the proper owner, name, and type
Definition: xml_util.c:552
status_t xml_get_reader_from_filespec(const char *filespec, xmlTextReaderPtr *reader)
Get a new xmlTextReader for parsing a debug test file.
Definition: xml_util.c:344
uint32 xml_strncpy(xmlChar *copyTo, const xmlChar *copyFrom, uint32 maxlen)
String copy for xmlChar – checks for buffer overflow.
Definition: xml_util.c:1501
xmlChar * xml_copy_clean_string(const xmlChar *str)
Get a malloced string contained the converted string from the input.
Definition: xml_util.c:2088
void xml_clean_attrs(xml_attrs_t *attrs)
clean an xml_attrs_t variable
Definition: xml_util.c:1241
xml_attr_t * xml_add_qattr(xml_attrs_t *attrs, xmlns_id_t ns_id, const xmlChar *attr_qname, uint32 plen, const xmlChar *attr_val, status_t *res)
add a qualified attribute to an attribute list with a prefix
Definition: xml_util.c:882
void xml_clean_node(xml_node_t *node)
Clean an xml_node_t struct.
Definition: xml_util.c:266
void xml_free_reader(xmlTextReaderPtr reader)
Free the previously allocated xmlTextReader.
Definition: xml_util.c:458
xml_attr_t * xml_first_attr(xml_attrs_t *attrs)
get the first attribute in the list
Definition: xml_util.c:1171
status_t xml_get_namespace_id(xmlTextReaderPtr reader, const xmlChar *prefix, uint32 prefixlen, boolean register_missing, xmlns_id_t *retnsid)
Get the namespace for the specified prefix (may be NULL) Use the current XML reader context to resolv...
Definition: xml_util.c:2325
void xml_move_attrs(xml_attrs_t *src_attrs, xml_attrs_t *dest_attrs)
Move all the attrs from the src to the dest.
Definition: xml_util.c:1267
int xml_strncmp(const xmlChar *s1, const xmlChar *s2, uint32 maxlen)
String compare for xmlChar for at most 'maxlen' xmlChars.
Definition: xml_util.c:1795
xml_attr_t * xml_new_attr(void)
malloc and init an attribute struct
Definition: xml_util.c:774
status_t xml_get_reader_for_session(xmlInputReadCallback readfn, xmlInputCloseCallback closefn, void *context, xmlTextReaderPtr *reader)
Get a new xmlTextReader for parsing the input of a NETCONF session.
Definition: xml_util.c:382
void xml_check_qname_content(xmlTextReaderPtr reader, xml_node_t *node)
Check if the string node content is a likely QName.
Definition: xml_util.c:2269
xml_node_t * xml_new_node(void)
Malloc and init a new xml_node_t struct.
Definition: xml_util.c:205
void xml_init_node(xml_node_t *node)
Init an xml_node_t struct.
Definition: xml_util.c:228
xmlChar xml_convert_char_entity(const xmlChar *str, uint32 *used)
Convert an XML character entity into a single xmlChar.
Definition: xml_util.c:2151
int xml_strnicmp(const xmlChar *s1, const xmlChar *s2, uint32 maxlen)
Case insensitive string compare for xmlChar for at most 'maxlen' xmlChars.
Definition: xml_util.c:1838
uint32 xml_strlen_sp(const xmlChar *str, boolean *sp)
get length and check if any whitespace at the same time
Definition: xml_util.c:1430
void xml_init_attrs(xml_attrs_t *attrs)
initialize an xml_attrs_t variable
Definition: xml_util.c:754
xml_attr_t * xml_next_attr(xml_attr_t *attr)
get the next attribute in the list
Definition: xml_util.c:1218
xmlChar * xml_strndup(const xmlChar *copyFrom, uint32 maxlen)
String duplicate for max N xmlChars.
Definition: xml_util.c:1638
void xml_dump_node(const xml_node_t *node, log_debug_t lvl)
Debug function to printf xml_node_t contents.
Definition: xml_util.c:673
xmlChar * xml_trim_string(xmlChar *str)
trim leading and trailing whitespace inline in the same buffer
Definition: xml_util.c:2606
status_t xml_add_xmlns_attr_string(xml_attrs_t *attrs, const xmlChar *ns, const xmlChar *pfix)
add an xmlns decl to the attribute Queue
Definition: xml_util.c:1019
dlq_hdr_t xml_attrs_t
queue of xml_attr_t
Definition: xml_util.h:155
status_t xml_add_xmlns_attr(xml_attrs_t *attrs, xmlns_id_t ns_id, const xmlChar *pfix)
add an xmlns decl to the attribute Queue
Definition: xml_util.c:938
xmlChar * xml_strdup(const xmlChar *copyFrom)
String duplicate for xmlChar.
Definition: xml_util.c:1534
boolean xml_advance_reader(xmlTextReaderPtr reader)
Advance to the next node in the specified reader.
Definition: xml_util.c:522
@ XML_NT_NONE
not set
Definition: xml_util.h:194
@ XML_NT_END
end-tag of an element
Definition: xml_util.h:197
@ XML_NT_STRING
string content node
Definition: xml_util.h:198
@ XML_NT_START
start-tag of an element
Definition: xml_util.h:196
@ XML_NT_EMPTY
standalone empty node
Definition: xml_util.h:195
NCX System Logging Manager.
represents one attribute
Definition: xml_util.h:159
const xmlChar * attr_name
attribute name without any prefix
Definition: xml_util.h:173
struct xpath_pcb_t_ * attr_xpcb
XPath PCB in case XPath was parsed.
Definition: xml_util.h:188
xmlns_id_t attr_ns
attribute namespace ID
Definition: xml_util.h:164
xmlns_id_t attr_xmlns_ns
if xmlns, then namespace ID getting assigned
Definition: xml_util.h:167
xmlChar * attr_val
attribute value string
Definition: xml_util.h:181
const xmlChar * attr_qname
attribute qname with prefix (if any)
Definition: xml_util.h:170
xmlChar * attr_dname
malloced attribute name full qualified name if any
Definition: xml_util.h:178
dlq_hdr_t attr_qhdr
queue header
Definition: xml_util.h:161
gather node data into a simple struct.
Definition: xml_util.h:207
const xmlChar * elname
element name without any prefix
Definition: xml_util.h:227
const xmlChar * module
YANG module found for this node.
Definition: xml_util.h:218
xmlChar * qname
qualified name of element
Definition: xml_util.h:224
const xmlChar * simval
simple value if this is an XML_NT_STRING node
Definition: xml_util.h:230
xmlChar * simfree
non-NULL if simval is freed
Definition: xml_util.h:236
xmlns_id_t contentnsid
namespace of content
Definition: xml_util.h:215
uint32 simlen
length of the simple value string
Definition: xml_util.h:233
const xmlChar * badns
set if nsid == xmlns_inv_id()
Definition: xml_util.h:221
int depth
XML node depth.
Definition: xml_util.h:239
xml_nodetyp_t nodetyp
XML tag type.
Definition: xml_util.h:209
xml_attrs_t attrs
attributes parsed for this node if XML_NT_EMPTY or XML_NT_START
Definition: xml_util.h:242
xmlns_id_t nsid
namespace ID
Definition: xml_util.h:212