]>
Commit | Line | Data |
---|---|---|
acddc0ed | 1 | // SPDX-License-Identifier: GPL-2.0-or-later |
1c2facd1 RW |
2 | /* |
3 | * Copyright (C) 2018 NetDEF, Inc. | |
4 | * Renato Westphal | |
1c2facd1 RW |
5 | */ |
6 | ||
7 | #ifndef _FRR_NORTHBOUND_WRAPPERS_H_ | |
8 | #define _FRR_NORTHBOUND_WRAPPERS_H_ | |
9 | ||
10 | #include "prefix.h" | |
11 | ||
17e38209 RW |
12 | #ifdef __cplusplus |
13 | extern "C" { | |
14 | #endif | |
15 | ||
1c2facd1 RW |
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, | |
0f9de11a DL |
20 | const char *xpath_fmt, ...) PRINTFRR(2, 3); |
21 | extern bool yang_get_default_bool(const char *xpath_fmt, ...) PRINTFRR(1, 2); | |
1c2facd1 RW |
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, | |
0f9de11a DL |
27 | const char *xpath_fmt, ...) PRINTFRR(2, 3); |
28 | extern double yang_get_default_dec64(const char *xpath_fmt, ...) PRINTFRR(1, 2); | |
1c2facd1 RW |
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, | |
0f9de11a DL |
34 | const char *xpath_fmt, ...) PRINTFRR(2, 3); |
35 | extern int yang_get_default_enum(const char *xpath_fmt, ...) PRINTFRR(1, 2); | |
1c2facd1 RW |
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, | |
0f9de11a DL |
41 | const char *xpath_fmt, ...) PRINTFRR(2, 3); |
42 | extern int8_t yang_get_default_int8(const char *xpath_fmt, ...) PRINTFRR(1, 2); | |
1c2facd1 RW |
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, | |
0f9de11a DL |
48 | const char *xpath_fmt, ...) PRINTFRR(2, 3); |
49 | extern int16_t yang_get_default_int16(const char *xpath_fmt, ...) | |
50 | PRINTFRR(1, 2); | |
1c2facd1 RW |
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, | |
0f9de11a DL |
56 | const char *xpath_fmt, ...) PRINTFRR(2, 3); |
57 | extern int32_t yang_get_default_int32(const char *xpath_fmt, ...) | |
58 | PRINTFRR(1, 2); | |
1c2facd1 RW |
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, | |
0f9de11a DL |
64 | const char *xpath_fmt, ...) PRINTFRR(2, 3); |
65 | extern int64_t yang_get_default_int64(const char *xpath_fmt, ...) | |
66 | PRINTFRR(1, 2); | |
1c2facd1 RW |
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, | |
0f9de11a DL |
72 | const char *xpath_fmt, ...) PRINTFRR(2, 3); |
73 | extern uint8_t yang_get_default_uint8(const char *xpath_fmt, ...) | |
74 | PRINTFRR(1, 2); | |
1c2facd1 RW |
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, | |
0f9de11a DL |
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); | |
1c2facd1 RW |
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, | |
0f9de11a DL |
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); | |
1c2facd1 RW |
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, | |
0f9de11a DL |
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); | |
1c2facd1 RW |
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, | |
0f9de11a DL |
110 | const char *xpath_fmt, ...) |
111 | PRINTFRR(2, 3); | |
1c2facd1 RW |
112 | extern void yang_dnode_get_string_buf(char *buf, size_t size, |
113 | const struct lyd_node *dnode, | |
0f9de11a DL |
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); | |
1c2facd1 | 118 | extern void yang_get_default_string_buf(char *buf, size_t size, |
0f9de11a DL |
119 | const char *xpath_fmt, ...) |
120 | PRINTFRR(3, 4); | |
1c2facd1 | 121 | |
ac313345 | 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, | |
0f9de11a DL |
127 | const char *xpath_fmt, ...) |
128 | PRINTFRR(4, 5); | |
ac313345 | 129 | |
b71df689 CS |
130 | /* empty */ |
131 | extern struct yang_data *yang_data_new_empty(const char *xpath); | |
47cd2234 | 132 | extern bool yang_dnode_get_empty(const struct lyd_node *dnode, |
0f9de11a | 133 | const char *xpath_fmt, ...) PRINTFRR(2, 3); |
b71df689 | 134 | |
eed84494 RW |
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); | |
46fcb2df | 139 | extern void yang_dnode_get_prefix(struct prefix *prefix, |
eed84494 | 140 | const struct lyd_node *dnode, |
0f9de11a | 141 | const char *xpath_fmt, ...) PRINTFRR(3, 4); |
eed84494 | 142 | extern void yang_get_default_prefix(union prefixptr var, const char *xpath_fmt, |
0f9de11a | 143 | ...) PRINTFRR(2, 3); |
eed84494 | 144 | |
1c2facd1 RW |
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, | |
0f9de11a | 151 | const char *xpath_fmt, ...) PRINTFRR(3, 4); |
1c2facd1 | 152 | extern void yang_get_default_ipv4(struct in_addr *var, const char *xpath_fmt, |
0f9de11a | 153 | ...) PRINTFRR(2, 3); |
1c2facd1 RW |
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, | |
70065793 | 158 | union prefixconstptr prefix); |
1c2facd1 RW |
159 | extern void yang_dnode_get_ipv4p(union prefixptr prefix, |
160 | const struct lyd_node *dnode, | |
0f9de11a | 161 | const char *xpath_fmt, ...) PRINTFRR(3, 4); |
1c2facd1 | 162 | extern void yang_get_default_ipv4p(union prefixptr var, const char *xpath_fmt, |
0f9de11a | 163 | ...) PRINTFRR(2, 3); |
1c2facd1 RW |
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, | |
0f9de11a | 171 | const char *xpath_fmt, ...) PRINTFRR(3, 4); |
1c2facd1 | 172 | extern void yang_get_default_ipv6(struct in6_addr *var, const char *xpath_fmt, |
0f9de11a | 173 | ...) PRINTFRR(2, 3); |
1c2facd1 RW |
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, | |
70065793 | 178 | union prefixconstptr prefix); |
1c2facd1 RW |
179 | extern void yang_dnode_get_ipv6p(union prefixptr prefix, |
180 | const struct lyd_node *dnode, | |
0f9de11a | 181 | const char *xpath_fmt, ...) PRINTFRR(3, 4); |
1c2facd1 | 182 | extern void yang_get_default_ipv6p(union prefixptr var, const char *xpath_fmt, |
0f9de11a | 183 | ...) PRINTFRR(2, 3); |
1c2facd1 | 184 | |
b0584ad3 QY |
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, | |
0f9de11a DL |
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); | |
b0584ad3 | 193 | |
dd9ef518 CS |
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 | ||
8d0c8ff5 CS |
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 */ | |
cad46cfd CS |
204 | extern const char *yang_nexthop_type2str(uint32_t ntype); |
205 | ||
755100ac | 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 | ||
17e38209 RW |
209 | #ifdef __cplusplus |
210 | } | |
211 | #endif | |
212 | ||
1c2facd1 | 213 | #endif /* _FRR_NORTHBOUND_WRAPPERS_H_ */ |