68#define XML_START_MSG ((const xmlChar *)\
69 "<?xml version=\"1.0\" encoding=\"UTF-8\"?>")
71#define XML_START_MSG_SIZE 38
77#define XML_READER_OPTIONS \
78 (XML_PARSE_RECOVER+XML_PARSE_NOERROR+ \
79 XML_PARSE_NOWARNING+XML_PARSE_NOBLANKS+XML_PARSE_NONET+ \
80 XML_PARSE_XINCLUDE+XML_PARSE_NOCDATA)
82#define XML_SES_URL "netconf://pdu"
157typedef struct xml_attr_t_ {
191typedef enum xml_nodetyp_t_ {
205typedef struct xml_node_t_ {
297 xmlTextReaderPtr *reader);
311 xmlTextReaderPtr *reader);
327 xmlInputCloseCallback closefn,
329 xmlTextReaderPtr *reader);
345 xmlInputCloseCallback closefn,
347 xmlTextReaderPtr reader);
393 const xmlChar *elname,
472 const xmlChar *attr_name,
473 const xmlChar *attr_val);
492 const xmlChar *attr_qname,
494 const xmlChar *attr_val,
510 const xmlChar *pfix);
525 const xmlChar *pfix);
544 const xmlChar *nsval);
612 const xmlChar *attrname);
629 const xmlChar *attrname);
646 const xmlChar *attrname);
689 const xmlChar *copyFrom);
703 const xmlChar *copyFrom,
726 const xmlChar *appendFrom);
739 const xmlChar *appendFrom,
958 const xmlChar *elname,
961 const xmlChar **badns);
995 const xmlChar *prefix,
997 boolean register_missing,
log_debug_t
The debug level enumerations used in util/log.c.
Definition: log.h:386
status_t
global error return code
Definition: status_enum.h:187
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:2447
char * xml_ch_strndup(const char *copyFrom, uint32 maxlen)
String duplicate for max N chars.
Definition: xml_util.c:1703
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:418
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:1090
xml_attr_t * xml_find_attr(xml_node_t *node, xmlns_id_t nsid, const xmlChar *attrname)
Find an attribute.
Definition: xml_util.c:1295
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:820
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:2043
uint32 xml_strcpy(xmlChar *copyTo, const xmlChar *copyFrom)
String copy for xmlChar.
Definition: xml_util.c:1486
xmlChar * xml_strncat(xmlChar *appendTo, const xmlChar *appendFrom, uint32 maxlen)
String concatenate for at most maxlen xmlChars.
Definition: xml_util.c:1630
int xml_stricmp(const xmlChar *s1, const xmlChar *s2)
Case insensitive string compare for xmlChar.
Definition: xml_util.c:1785
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:1367
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:305
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:1597
int xml_strcmp(const xmlChar *s1, const xmlChar *s2)
String compare for xmlChar.
Definition: xml_util.c:1746
boolean xml_isspace(uint32 ch)
Check if an xmlChar is a space char.
Definition: xml_util.c:1901
xml_nodetyp_t
only 4 types of nodes returned
Definition: xml_util.h:191
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:1324
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:1964
boolean xml_docdone(xmlTextReaderPtr reader)
check if the input is completed for a given PDU
Definition: xml_util.c:636
void xml_free_attr(xml_attr_t *attr)
free an attribute
Definition: xml_util.c:785
uint32 xml_strlen(const xmlChar *str)
Get the String len for xmlChar.
Definition: xml_util.c:1406
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:592
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:1192
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:475
boolean xml_isspace_str(const xmlChar *str)
Check if an xmlChar string is all whitespace chars.
Definition: xml_util.c:1923
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:2248
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:545
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:341
uint32 xml_strncpy(xmlChar *copyTo, const xmlChar *copyFrom, uint32 maxlen)
String copy for xmlChar – checks for buffer overflow.
Definition: xml_util.c:1518
xmlChar * xml_copy_clean_string(const xmlChar *str)
Get a malloced string contained the converted string from the input.
Definition: xml_util.c:2119
void xml_clean_attrs(xml_attrs_t *attrs)
clean an xml_attrs_t variable
Definition: xml_util.c:1243
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:872
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:453
xml_attr_t * xml_first_attr(xml_attrs_t *attrs)
get the first attribute in the list
Definition: xml_util.c:1167
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:2360
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:1272
int xml_strncmp(const xmlChar *s1, const xmlChar *s2, uint32 maxlen)
String compare for xmlChar for at most 'maxlen' xmlChars.
Definition: xml_util.c:1824
xml_attr_t * xml_new_attr(void)
malloc and init an attribute struct
Definition: xml_util.c:764
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:378
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:2307
xml_node_t * xml_new_node(void)
Malloc and init a new xml_node_t struct.
Definition: xml_util.c:206
void xml_init_node(xml_node_t *node)
Init an xml_node_t struct.
Definition: xml_util.c:229
xmlChar xml_convert_char_entity(const xmlChar *str, uint32 *used)
Convert an XML character entity into a single xmlChar.
Definition: xml_util.c:2185
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:1865
uint32 xml_strlen_sp(const xmlChar *str, boolean *sp)
get length and check if any whitespace at the same time
Definition: xml_util.c:1443
void xml_init_attrs(xml_attrs_t *attrs)
initialize an xml_attrs_t variable
Definition: xml_util.c:745
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:1663
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:661
xmlChar * xml_trim_string(xmlChar *str)
trim leading and trailing whitespace inline in the same buffer
Definition: xml_util.c:2646
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:1011
dlq_hdr_t xml_attrs_t
queue of xml_attr_t
Definition: xml_util.h:153
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:928
xmlChar * xml_strdup(const xmlChar *copyFrom)
String duplicate for xmlChar.
Definition: xml_util.c:1553
boolean xml_advance_reader(xmlTextReaderPtr reader)
Advance to the next node in the specified reader.
Definition: xml_util.c:517
@ XML_NT_NONE
not set
Definition: xml_util.h:192
@ XML_NT_END
end-tag of an element
Definition: xml_util.h:195
@ XML_NT_STRING
string content node
Definition: xml_util.h:196
@ XML_NT_START
start-tag of an element
Definition: xml_util.h:194
@ XML_NT_EMPTY
standalone empty node
Definition: xml_util.h:193
NCX System Logging Manager.
represents one attribute
Definition: xml_util.h:157
const xmlChar * attr_name
attribute name without any prefix
Definition: xml_util.h:171
struct xpath_pcb_t_ * attr_xpcb
XPath PCB in case XPath was parsed.
Definition: xml_util.h:186
xmlns_id_t attr_ns
attribute namespace ID
Definition: xml_util.h:162
xmlns_id_t attr_xmlns_ns
if xmlns, then namespace ID getting assigned
Definition: xml_util.h:165
xmlChar * attr_val
attribute value string
Definition: xml_util.h:179
const xmlChar * attr_qname
attribute qname with prefix (if any)
Definition: xml_util.h:168
xmlChar * attr_dname
malloced attribute name full qualified name if any
Definition: xml_util.h:176
dlq_hdr_t attr_qhdr
queue header
Definition: xml_util.h:159
gather node data into a simple struct.
Definition: xml_util.h:205
const xmlChar * elname
element name without any prefix
Definition: xml_util.h:225
const xmlChar * module
YANG module found for this node.
Definition: xml_util.h:216
xmlChar * qname
qualified name of element
Definition: xml_util.h:222
const xmlChar * simval
simple value if this is an XML_NT_STRING node
Definition: xml_util.h:228
xmlChar * simfree
non-NULL if simval is freed
Definition: xml_util.h:234
xmlns_id_t contentnsid
namespace of content
Definition: xml_util.h:213
uint32 simlen
length of the simple value string
Definition: xml_util.h:231
const xmlChar * badns
set if nsid == xmlns_inv_id()
Definition: xml_util.h:219
int depth
XML node depth.
Definition: xml_util.h:237
xml_nodetyp_t nodetyp
XML tag type.
Definition: xml_util.h:207
xml_attrs_t attrs
attributes parsed for this node if XML_NT_EMPTY or XML_NT_START
Definition: xml_util.h:240
xmlns_id_t nsid
namespace ID
Definition: xml_util.h:210