]> git.proxmox.com Git - mirror_frr.git/blob - lib/yang_wrappers.h
Merge pull request #12798 from donaldsharp/rib_match_multicast
[mirror_frr.git] / lib / yang_wrappers.h
1 // SPDX-License-Identifier: GPL-2.0-or-later
2 /*
3 * Copyright (C) 2018 NetDEF, Inc.
4 * Renato Westphal
5 */
6
7 #ifndef _FRR_NORTHBOUND_WRAPPERS_H_
8 #define _FRR_NORTHBOUND_WRAPPERS_H_
9
10 #include "prefix.h"
11
12 #ifdef __cplusplus
13 extern "C" {
14 #endif
15
16 /* bool */
17 extern bool yang_str2bool(const char *value);
18 extern struct yang_data *yang_data_new_bool(const char *xpath, bool value);
19 extern bool yang_dnode_get_bool(const struct lyd_node *dnode,
20 const char *xpath_fmt, ...) PRINTFRR(2, 3);
21 extern bool yang_get_default_bool(const char *xpath_fmt, ...) PRINTFRR(1, 2);
22
23 /* dec64 */
24 extern double yang_str2dec64(const char *xpath, const char *value);
25 extern struct yang_data *yang_data_new_dec64(const char *xpath, double value);
26 extern double yang_dnode_get_dec64(const struct lyd_node *dnode,
27 const char *xpath_fmt, ...) PRINTFRR(2, 3);
28 extern double yang_get_default_dec64(const char *xpath_fmt, ...) PRINTFRR(1, 2);
29
30 /* enum */
31 extern int yang_str2enum(const char *xpath, const char *value);
32 extern struct yang_data *yang_data_new_enum(const char *xpath, int value);
33 extern int yang_dnode_get_enum(const struct lyd_node *dnode,
34 const char *xpath_fmt, ...) PRINTFRR(2, 3);
35 extern int yang_get_default_enum(const char *xpath_fmt, ...) PRINTFRR(1, 2);
36
37 /* int8 */
38 extern int8_t yang_str2int8(const char *value);
39 extern struct yang_data *yang_data_new_int8(const char *xpath, int8_t value);
40 extern int8_t yang_dnode_get_int8(const struct lyd_node *dnode,
41 const char *xpath_fmt, ...) PRINTFRR(2, 3);
42 extern int8_t yang_get_default_int8(const char *xpath_fmt, ...) PRINTFRR(1, 2);
43
44 /* int16 */
45 extern int16_t yang_str2int16(const char *value);
46 extern struct yang_data *yang_data_new_int16(const char *xpath, int16_t value);
47 extern int16_t yang_dnode_get_int16(const struct lyd_node *dnode,
48 const char *xpath_fmt, ...) PRINTFRR(2, 3);
49 extern int16_t yang_get_default_int16(const char *xpath_fmt, ...)
50 PRINTFRR(1, 2);
51
52 /* int32 */
53 extern int32_t yang_str2int32(const char *value);
54 extern struct yang_data *yang_data_new_int32(const char *xpath, int32_t value);
55 extern int32_t yang_dnode_get_int32(const struct lyd_node *dnode,
56 const char *xpath_fmt, ...) PRINTFRR(2, 3);
57 extern int32_t yang_get_default_int32(const char *xpath_fmt, ...)
58 PRINTFRR(1, 2);
59
60 /* int64 */
61 extern int64_t yang_str2int64(const char *value);
62 extern struct yang_data *yang_data_new_int64(const char *xpath, int64_t value);
63 extern int64_t yang_dnode_get_int64(const struct lyd_node *dnode,
64 const char *xpath_fmt, ...) PRINTFRR(2, 3);
65 extern int64_t yang_get_default_int64(const char *xpath_fmt, ...)
66 PRINTFRR(1, 2);
67
68 /* uint8 */
69 extern uint8_t yang_str2uint8(const char *value);
70 extern struct yang_data *yang_data_new_uint8(const char *xpath, uint8_t value);
71 extern uint8_t yang_dnode_get_uint8(const struct lyd_node *dnode,
72 const char *xpath_fmt, ...) PRINTFRR(2, 3);
73 extern uint8_t yang_get_default_uint8(const char *xpath_fmt, ...)
74 PRINTFRR(1, 2);
75
76 /* uint16 */
77 extern uint16_t yang_str2uint16(const char *value);
78 extern struct yang_data *yang_data_new_uint16(const char *xpath,
79 uint16_t value);
80 extern uint16_t yang_dnode_get_uint16(const struct lyd_node *dnode,
81 const char *xpath_fmt, ...)
82 PRINTFRR(2, 3);
83 extern uint16_t yang_get_default_uint16(const char *xpath_fmt, ...)
84 PRINTFRR(1, 2);
85
86 /* uint32 */
87 extern uint32_t yang_str2uint32(const char *value);
88 extern struct yang_data *yang_data_new_uint32(const char *xpath,
89 uint32_t value);
90 extern uint32_t yang_dnode_get_uint32(const struct lyd_node *dnode,
91 const char *xpath_fmt, ...)
92 PRINTFRR(2, 3);
93 extern uint32_t yang_get_default_uint32(const char *xpath_fmt, ...)
94 PRINTFRR(1, 2);
95
96 /* uint64 */
97 extern uint64_t yang_str2uint64(const char *value);
98 extern struct yang_data *yang_data_new_uint64(const char *xpath,
99 uint64_t value);
100 extern uint64_t yang_dnode_get_uint64(const struct lyd_node *dnode,
101 const char *xpath_fmt, ...)
102 PRINTFRR(2, 3);
103 extern uint64_t yang_get_default_uint64(const char *xpath_fmt, ...)
104 PRINTFRR(1, 2);
105
106 /* string */
107 extern struct yang_data *yang_data_new_string(const char *xpath,
108 const char *value);
109 extern const char *yang_dnode_get_string(const struct lyd_node *dnode,
110 const char *xpath_fmt, ...)
111 PRINTFRR(2, 3);
112 extern void yang_dnode_get_string_buf(char *buf, size_t size,
113 const struct lyd_node *dnode,
114 const char *xpath_fmt, ...)
115 PRINTFRR(4, 5);
116 extern const char *yang_get_default_string(const char *xpath_fmt, ...)
117 PRINTFRR(1, 2);
118 extern void yang_get_default_string_buf(char *buf, size_t size,
119 const char *xpath_fmt, ...)
120 PRINTFRR(3, 4);
121
122 /* binary */
123 extern struct yang_data *yang_data_new_binary(const char *xpath,
124 const char *value, size_t len);
125 extern size_t yang_dnode_get_binary_buf(char *buf, size_t size,
126 const struct lyd_node *dnode,
127 const char *xpath_fmt, ...)
128 PRINTFRR(4, 5);
129
130 /* empty */
131 extern struct yang_data *yang_data_new_empty(const char *xpath);
132 extern bool yang_dnode_get_empty(const struct lyd_node *dnode,
133 const char *xpath_fmt, ...) PRINTFRR(2, 3);
134
135 /* ip prefix */
136 extern void yang_str2prefix(const char *value, union prefixptr prefix);
137 extern struct yang_data *yang_data_new_prefix(const char *xpath,
138 union prefixconstptr prefix);
139 extern void yang_dnode_get_prefix(struct prefix *prefix,
140 const struct lyd_node *dnode,
141 const char *xpath_fmt, ...) PRINTFRR(3, 4);
142 extern void yang_get_default_prefix(union prefixptr var, const char *xpath_fmt,
143 ...) PRINTFRR(2, 3);
144
145 /* ipv4 */
146 extern void yang_str2ipv4(const char *value, struct in_addr *addr);
147 extern struct yang_data *yang_data_new_ipv4(const char *xpath,
148 const struct in_addr *addr);
149 extern void yang_dnode_get_ipv4(struct in_addr *addr,
150 const struct lyd_node *dnode,
151 const char *xpath_fmt, ...) PRINTFRR(3, 4);
152 extern void yang_get_default_ipv4(struct in_addr *var, const char *xpath_fmt,
153 ...) PRINTFRR(2, 3);
154
155 /* ipv4p */
156 extern void yang_str2ipv4p(const char *value, union prefixptr prefix);
157 extern struct yang_data *yang_data_new_ipv4p(const char *xpath,
158 union prefixconstptr prefix);
159 extern void yang_dnode_get_ipv4p(union prefixptr prefix,
160 const struct lyd_node *dnode,
161 const char *xpath_fmt, ...) PRINTFRR(3, 4);
162 extern void yang_get_default_ipv4p(union prefixptr var, const char *xpath_fmt,
163 ...) PRINTFRR(2, 3);
164
165 /* ipv6 */
166 extern void yang_str2ipv6(const char *value, struct in6_addr *addr);
167 extern struct yang_data *yang_data_new_ipv6(const char *xpath,
168 const struct in6_addr *addr);
169 extern void yang_dnode_get_ipv6(struct in6_addr *addr,
170 const struct lyd_node *dnode,
171 const char *xpath_fmt, ...) PRINTFRR(3, 4);
172 extern void yang_get_default_ipv6(struct in6_addr *var, const char *xpath_fmt,
173 ...) PRINTFRR(2, 3);
174
175 /* ipv6p */
176 extern void yang_str2ipv6p(const char *value, union prefixptr prefix);
177 extern struct yang_data *yang_data_new_ipv6p(const char *xpath,
178 union prefixconstptr prefix);
179 extern void yang_dnode_get_ipv6p(union prefixptr prefix,
180 const struct lyd_node *dnode,
181 const char *xpath_fmt, ...) PRINTFRR(3, 4);
182 extern void yang_get_default_ipv6p(union prefixptr var, const char *xpath_fmt,
183 ...) PRINTFRR(2, 3);
184
185 /* ip */
186 extern void yang_str2ip(const char *value, struct ipaddr *addr);
187 extern struct yang_data *yang_data_new_ip(const char *xpath,
188 const struct ipaddr *addr);
189 extern void yang_dnode_get_ip(struct ipaddr *addr, const struct lyd_node *dnode,
190 const char *xpath_fmt, ...) PRINTFRR(3, 4);
191 extern void yang_get_default_ip(struct ipaddr *var, const char *xpath_fmt, ...)
192 PRINTFRR(2, 3);
193
194 /* mac */
195 extern struct yang_data *yang_data_new_mac(const char *xpath,
196 const struct ethaddr *mac);
197 extern void yang_str2mac(const char *value, struct ethaddr *mac);
198
199 /*data-and-time */
200 extern struct yang_data *yang_data_new_date_and_time(const char *xpath,
201 time_t time);
202
203 /* nexthop enum2str */
204 extern const char *yang_nexthop_type2str(uint32_t ntype);
205
206 const char *yang_afi_safi_value2identity(afi_t afi, safi_t safi);
207 void yang_afi_safi_identity2value(const char *key, afi_t *afi, safi_t *safi);
208
209 #ifdef __cplusplus
210 }
211 #endif
212
213 #endif /* _FRR_NORTHBOUND_WRAPPERS_H_ */