36 #include <xmlstring.h> 83 #define MAX_STD_CAP_NAME_LEN 31 85 #define CAP_VERSION_LEN 15 88 #define CAP_BASE_URN ((const xmlChar *) \ 89 "urn:ietf:params:netconf:base:1.0") 92 #define CAP_BASE_URN11 ((const xmlChar *) \ 93 "urn:ietf:params:netconf:base:1.1") 96 #define CAP_URN ((const xmlChar *)"urn:ietf:params:netconf:capability:") 99 #define CAP_REST_URN ((const xmlChar *)"urn:ietf:params:restconf:capability:") 103 (const xmlChar *)"urn:ietf:params:xml:ns:netconf:capability:" 106 (const xmlChar *)"http://xml.juniper.net/netconf/junos/1.0" 108 #define CAP_SEP_CH '/' 118 #define CAP_BIT_V1 bit0 119 #define CAP_BIT_WR_RUN bit1 120 #define CAP_BIT_CANDIDATE bit2 121 #define CAP_BIT_CONF_COMMIT bit3 122 #define CAP_BIT_ROLLBACK_ERR bit4 123 #define CAP_BIT_VALIDATE bit5 124 #define CAP_BIT_STARTUP bit6 125 #define CAP_BIT_URL bit7 126 #define CAP_BIT_XPATH bit8 127 #define CAP_BIT_NOTIFICATION bit9 128 #define CAP_BIT_INTERLEAVE bit10 129 #define CAP_BIT_PARTIAL_LOCK bit11 130 #define CAP_BIT_WITH_DEFAULTS bit12 131 #define CAP_BIT_V11 bit13 132 #define CAP_BIT_CONF_COMMIT11 bit14 133 #define CAP_BIT_VALIDATE11 bit15 134 #define CAP_BIT_DEPTH bit16 135 #define CAP_BIT_FIELDS bit17 136 #define CAP_BIT_FILTER bit18 137 #define CAP_BIT_REPLAY bit19 138 #define CAP_BIT_DEFAULTS bit20 139 #define CAP_BIT_YANGPATCH bit21 140 #define CAP_BIT_YANGLIB bit22 141 #define CAP_BIT_YANGLIB11 bit23 145 #define CAP_NAME_V1 ((const xmlChar *)"base:1.0") 146 #define CAP_NAME_V11 ((const xmlChar *)"base:1.1") 147 #define CAP_NAME_CANDIDATE ((const xmlChar *)"candidate:1.0") 148 #define CAP_NAME_CONF_COMMIT ((const xmlChar *)"confirmed-commit:1.0") 149 #define CAP_NAME_CONF_COMMIT11 ((const xmlChar *)"confirmed-commit:1.1") 150 #define CAP_NAME_DEFAULTS ((const xmlChar *)"defaults:1.0") 151 #define CAP_NAME_DEPTH ((const xmlChar *)"depth:1.0") 152 #define CAP_NAME_FIELDS ((const xmlChar *)"fields:1.0") 153 #define CAP_NAME_FILTER ((const xmlChar *)"filter:1.0") 154 #define CAP_NAME_INTERLEAVE ((const xmlChar *)"interleave:1.0") 155 #define CAP_NAME_NOTIFICATION ((const xmlChar *)"notification:1.0") 156 #define CAP_NAME_PARTIAL_LOCK ((const xmlChar *)"partial-lock:1.0") 157 #define CAP_NAME_REPLAY ((const xmlChar *)"replay:1.0") 158 #define CAP_NAME_ROLLBACK_ERR ((const xmlChar *)"rollback-on-error:1.0") 159 #define CAP_NAME_STARTUP ((const xmlChar *)"startup:1.0") 160 #define CAP_NAME_URL ((const xmlChar *)"url:1.0") 161 #define CAP_NAME_VALIDATE ((const xmlChar *)"validate:1.0") 162 #define CAP_NAME_VALIDATE11 ((const xmlChar *)"validate:1.1") 163 #define CAP_NAME_WITH_DEFAULTS ((const xmlChar *)"with-defaults:1.0") 164 #define CAP_NAME_WR_RUN ((const xmlChar *)"writable-running:1.0") 165 #define CAP_NAME_XPATH ((const xmlChar *)"xpath:1.0") 166 #define CAP_NAME_YANGLIB ((const xmlChar *)"yang-library:1.0") 167 #define CAP_NAME_YANGLIB11 ((const xmlChar *)"yang-library:1.1") 168 #define CAP_NAME_YANGPATCH ((const xmlChar *)"yang-patch:1.0") 173 #define CAP_REVISION_EQ (const xmlChar *)"revision=" 174 #define CAP_MODULE_EQ (const xmlChar *)"module=" 175 #define CAP_FEATURES_EQ (const xmlChar *)"features=" 176 #define CAP_DEVIATIONS_EQ (const xmlChar *)"deviations=" 177 #define CAP_SCHEME_EQ (const xmlChar *)"scheme=" 178 #define CAP_PROTOCOL_EQ (const xmlChar *)"protocol=" 179 #define CAP_BASIC_EQ (const xmlChar *)"basic-mode=" 180 #define CAP_SUPPORTED_EQ (const xmlChar *)"also-supported=" 181 #define CAP_MODULESETID_EQ (const xmlChar *)"module-set-id=" 182 #define CAP_CONTENTID_EQ (const xmlChar *)"content-id=" 184 #define CAP_YANGLIB_REVISION_PARAM (const xmlChar *)"revision=2016-06-21" 185 #define CAP_YANGLIB_REVISION (const xmlChar *)"2016-06-21" 187 #define CAP_YANGLIB_NMDA_REVISION_PARAM (const xmlChar *)"revision=2019-01-04" 188 #define CAP_YANGLIB_NMDA_REVISION (const xmlChar *)"2019-01-04" 191 #define CAP_YANGLIB_BASE_URN \ 192 (const xmlChar *)"urn:ietf:params:netconf:capability:yang-library:1.0" 195 #define CAP_YANGLIB_NMDA_BASE_URN \ 196 (const xmlChar *)"urn:ietf:params:netconf:capability:yang-library:1.1" 198 #define CAP_SCHEMA_RETRIEVAL \ 199 (const xmlChar *)"urn:ietf:params:xml:ns:yang:ietf-netconf-monitoring" 209 typedef enum cap_subjtyp_t_ {
219 typedef enum cap_change_t_ {
228 typedef enum cap_stdid_t_ {
299 CAP_STDID_LAST_MARKER
304 typedef struct cap_list_t_ {
319 typedef struct cap_rec_t_ {
321 cap_subjtyp_t cap_subject;
323 xmlChar *cap_namespace;
325 xmlChar *cap_revision;
332 typedef enum cap_yanglib_ver_t_ {
415 boolean is_restconf);
432 boolean is_restconf);
469 const xmlChar *scheme_list);
484 const xmlChar *scheme_list,
485 boolean is_restconf);
497 const xmlChar *defstyle);
513 const xmlChar *defstyle,
514 uint8 withdef_enabled,
515 boolean is_restconf);
528 const xmlChar *defstyle);
540 const xmlChar *uristr);
552 const xmlChar *urival);
651 const xmlChar *capuri);
667 const xmlChar *capuri);
683 const xmlChar *capuri);
693 extern const xmlChar *
734 const xmlChar *modname);
789 const xmlChar **module,
790 const xmlChar **revision,
791 const xmlChar **namespacestr);
836 boolean is_module_id,
837 cap_yanglib_ver_t yanglib_ver);
849 cap_yanglib_ver_t yanglib_ver);
:notification:1.0 *(RFC 5277 )
Definition: cap.h:257
Version 1.1 NMDA.
Definition: cap.h:340
capability is a protocol extension
Definition: cap.h:211
used with obj_deviation_t to defer object lookups
Definition: ncxtypes.h:1365
void cap_init_caplist(cap_list_t *caplist)
Initialize the fields in a pre-allocated cap_list_t struct memory for caplist already allocated – th...
Definition: cap.c:569
queue of this structure for list of enterprise capabilities
Definition: cap.h:319
void cap_dump_entcaps(const cap_list_t *caplist, log_debug_t lvl, FILE *outfile)
Printf the enterprise capabilities list debug function.
Definition: cap.c:2631
xmlChar * cap_make_moduri(ncx_module_t *mod)
Malloc and construct a module URI for the specified module make the module URI string (for sysCapabil...
Definition: cap.c:2779
log_debug_t
The debug level enumerations used in util/log.c.
Definition: log.h:386
void cap_clean_caplist(cap_list_t *caplist)
Clean the fields in a pre-allocated cap_list_t struct Memory for caplist not deallocated – this just...
Definition: cap.c:596
status_t cap_add_entval(val_value_t *caplist, const xmlChar *urival)
Add an enterprise capability to the list (val_value_t version)
Definition: cap.c:1816
:with-defaults:1.0 (RFC 6243)
Definition: cap.h:266
void cap_dump_modcaps(const cap_list_t *caplist, log_debug_t lvl, FILE *outfile)
Printf the standard data model module capabilities list debug function.
Definition: cap.c:2489
NETCONF v1.1 (RFC 6241)
Definition: cap.h:269
xmlChar * cap_schemes
URL capability protocol list.
Definition: cap.h:306
capability is a data model
Definition: cap.h:212
config-id capability
Definition: cap.h:214
const cap_rec_t * cap_find_modcap(const cap_list_t *caplist, const xmlChar *modname)
Find a specified module in the caplist.
Definition: cap.c:2596
cap_stdid_t
enumerated list of standard capability IDs
Definition: cap.h:228
YANG-LIBRARY 1.0 capability.
Definition: cap.h:295
YANG-LIBRARY 1.1 capability.
Definition: cap.h:297
status_t cap_add_module_string(cap_list_t *caplist, const xmlChar *uri)
Add a standard protocol capability to the list by URI string.
Definition: cap.c:1084
:partial-lock:1.0 (RFC 5717)
Definition: cap.h:263
void cap_remove_mod(cap_list_t *caplist, ncx_module_t *mod)
Remove a module capability from the list.
Definition: cap.c:2009
cap_rec_t * cap_first_modcap(cap_list_t *caplist)
Get the first module capability in the list.
Definition: cap.c:2674
:confirmed-commit:v1.1 (RFC 6241)
Definition: cap.h:275
representation of one module or submodule during and after parsing
Definition: ncxtypes.h:1052
RESTCONF depth parameter.
Definition: cap.h:278
RESTCONF fields parameter.
Definition: cap.h:281
status_t cap_add_modval(val_value_t *caplist, ncx_module_t *mod)
Add a module capability to the list (val_value_t version)
Definition: cap.c:1860
cap_list_t * cap_new_caplist(void)
Malloc and initialize the fields in a cap_list_t struct.
Definition: cap.c:544
Value Node Basic Support.
:xpath:1.0
Definition: cap.h:254
status_t cap_add_ent(cap_list_t *caplist, const xmlChar *uristr)
Add an enterprise capability to the list.
Definition: cap.c:1773
:interleave:1.0 *(RFC 5277 )
Definition: cap.h:260
boolean cap_is_module_string(const xmlChar *uri)
Check if the capability URI is a YANG module identifier.
Definition: cap.c:1048
status_t cap_add_url(cap_list_t *caplist, const xmlChar *scheme_list)
Add the #url capability to the list.
Definition: cap.c:1373
YANG module data structures Many internal representations of YANG module constructs.
status_t cap_add_urlval(val_value_t *caplist, const xmlChar *scheme_list, boolean is_restconf)
Add the :url capability to the list; value struct version.
Definition: cap.c:1415
boolean cap_std_set(const cap_list_t *caplist, cap_stdid_t capstd)
fast search of standard protocol capability set
Definition: cap.c:2168
cap_change_t
Capability Change Type.
Definition: cap.h:219
status_t cap_add_withdef(cap_list_t *caplist, const xmlChar *defstyle)
Add the :with-defaults capability to the list.
Definition: cap.c:1485
cap_rec_t * cap_next_modcap(cap_rec_t *curcap)
Get the next module capability in the list.
Definition: cap.c:2707
boolean cap_set(const cap_list_t *caplist, const xmlChar *capuri)
Check if the capability URI is set in the capslist linear search of capability list, will check for std uris as well.
Definition: cap.c:2197
void cap_split_modcap(cap_rec_t *cap, const xmlChar **module, const xmlChar **revision, const xmlChar **namespacestr)
Split the modcap string into 3 parts.
Definition: cap.c:2746
:rollback-on-error:1.0
Definition: cap.h:242
one capabilities list
Definition: cap.h:304
RESTCONF yangpatch parameter.
Definition: cap.h:293
:validate:v1.1 (RFC 6241)
Definition: cap.h:272
one value to match one type
Definition: val.h:870
xmlChar * cap_yanglib_setid
yang-library module-set-id param
Definition: cap.h:312
cap_yanglib_ver_t
YANG library URI to use.
Definition: cap.h:332
Version 1.0 non-NMDA.
Definition: cap.h:337
status_t cap_add_std_string(cap_list_t *caplist, const xmlChar *uri, boolean is_restconf)
Add a standard protocol capability to the list by URI string.
Definition: cap.c:872
cap_subjtyp_t
NETCONF capability subject types.
Definition: cap.h:209
:url:1.0
Definition: cap.h:251
:candidate:1.0
Definition: cap.h:236
NETCONF 1.0 (RFC 4741)
Definition: cap.h:230
status_t cap_remove_modval(val_value_t *caplist, ncx_module_t *mod)
Remove a module capability from the list (val_value_t version)
Definition: cap.c:1908
status_t cap_add_restdefval(val_value_t *caplist, const xmlChar *defstyle)
Add the :defaults capability to the RESTCONF caplist value struct version.
Definition: cap.c:1704
status_t
global error return code
Definition: status_enum.h:186
const xmlChar * cap_get_protos(cap_list_t *caplist)
get the #url capability protocols list if it exists get the protocols field for the :url capability ...
Definition: cap.c:2351
status_t cap_add_config_id(cap_list_t *caplist)
Add the :config-id capability to the list.
Definition: cap.c:2810
status_t cap_add_yanglib(cap_list_t *caplist, cap_yanglib_ver_t yanglib_ver)
Add the :yang-library capability to the list.
Definition: cap.c:3025
:writable-running:1.0
Definition: cap.h:233
uint32 cap_std
bitset of std caps
Definition: cap.h:305
Global error messages for status code enumerations.
:confirmed-commit:1.0
Definition: cap.h:239
status_t cap_add_mod(cap_list_t *caplist, ncx_module_t *mod)
Add a module capability to the list.
Definition: cap.c:1971
status_t cap_add_withdefval(val_value_t *caplist, const xmlChar *defstyle, uint8 withdef_enabled, boolean is_restconf)
Add the :with-defaults capability to the list; value struct version.
Definition: cap.c:1544
status_t cap_add_netconf_modval(val_value_t *caplist, ncx_module_t *mod)
Add a module capability to the list (val_value_t version)
Definition: cap.c:2078
header for a NCX List
Definition: ncxtypes.h:794
RESTCONF replay parameter.
Definition: cap.h:287
RESTCONF defaults parameter.
Definition: cap.h:290
capability is other than prot or DM (ENT)
Definition: cap.h:213
status_t cap_add_ids_val(val_value_t *caplist, boolean is_module_id, cap_yanglib_ver_t yanglib_ver)
Add the :config-id capability to the list.
Definition: cap.c:2891
status_t cap_add_stdval(val_value_t *caplist, cap_stdid_t capstd, boolean is_restconf)
Add a standard protocol capability to the list (val_value_t version)
Definition: cap.c:708
:startup:v1.0
Definition: cap.h:248
xmlChar * cap_yanglib_rev
YANG-LIBRARY pointers, stored in the cap list.
Definition: cap.h:311
cap_rec_t * cap_match(const cap_list_t *caplist, const xmlChar *capuri)
Check if the capability URI is set in the capslist.
Definition: cap.c:2273
val_value_t * cap_match_val(val_value_t *caplist, const xmlChar *capuri)
Check if the capability URI is set in the capslist value_t tree.
Definition: cap.c:2313
:validate:1.0
Definition: cap.h:245
xmlChar * cap_defstyle
with-defaults 'basic' parm
Definition: cap.h:307
status_t cap_add_devmodval(val_value_t *caplist, ncx_save_deviations_t *savedev)
Add a deviation module capability to the list (val_value_t version)
Definition: cap.c:2121
void cap_free_caplist(cap_list_t *caplist)
Clean the fields in a pre-allocated cap_list_t struct Then free the caplist memory.
Definition: cap.c:652
not set
Definition: cap.h:334
status_t cap_add_std(cap_list_t *caplist, cap_stdid_t capstd)
Add a standard protocol capability to the list.
Definition: cap.c:676
RESTCONF filter parameter.
Definition: cap.h:284
void cap_dump_stdcaps(const cap_list_t *caplist, log_debug_t lvl, FILE *outfile)
debug function Printf the standard protocol capabilities list
Definition: cap.c:2397
xmlChar * cap_supported
with-defaults 'also-supported' parm
Definition: cap.h:308