]>
Commit | Line | Data |
---|---|---|
1c2facd1 RW |
1 | /* |
2 | * Copyright (C) 2018 NetDEF, Inc. | |
3 | * Renato Westphal | |
4 | * | |
5 | * This program is free software; you can redistribute it and/or modify it | |
6 | * under the terms of the GNU General Public License as published by the Free | |
7 | * Software Foundation; either version 2 of the License, or (at your option) | |
8 | * any later version. | |
9 | * | |
10 | * This program is distributed in the hope that it will be useful, but WITHOUT | |
11 | * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or | |
12 | * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for | |
13 | * more details. | |
14 | * | |
15 | * You should have received a copy of the GNU General Public License along | |
16 | * with this program; see the file COPYING; if not, write to the Free Software | |
17 | * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA | |
18 | */ | |
19 | ||
20 | #ifndef _FRR_NORTHBOUND_WRAPPERS_H_ | |
21 | #define _FRR_NORTHBOUND_WRAPPERS_H_ | |
22 | ||
23 | #include "prefix.h" | |
24 | ||
17e38209 RW |
25 | #ifdef __cplusplus |
26 | extern "C" { | |
27 | #endif | |
28 | ||
1c2facd1 RW |
29 | /* bool */ |
30 | extern bool yang_str2bool(const char *value); | |
31 | extern struct yang_data *yang_data_new_bool(const char *xpath, bool value); | |
32 | extern bool yang_dnode_get_bool(const struct lyd_node *dnode, | |
33 | const char *xpath_fmt, ...); | |
34 | extern bool yang_get_default_bool(const char *xpath_fmt, ...); | |
35 | ||
36 | /* dec64 */ | |
37 | extern double yang_str2dec64(const char *xpath, const char *value); | |
38 | extern struct yang_data *yang_data_new_dec64(const char *xpath, double value); | |
39 | extern double yang_dnode_get_dec64(const struct lyd_node *dnode, | |
40 | const char *xpath_fmt, ...); | |
41 | extern double yang_get_default_dec64(const char *xpath_fmt, ...); | |
42 | ||
43 | /* enum */ | |
44 | extern int yang_str2enum(const char *xpath, const char *value); | |
45 | extern struct yang_data *yang_data_new_enum(const char *xpath, int value); | |
46 | extern int yang_dnode_get_enum(const struct lyd_node *dnode, | |
47 | const char *xpath_fmt, ...); | |
48 | extern int yang_get_default_enum(const char *xpath_fmt, ...); | |
49 | ||
50 | /* int8 */ | |
51 | extern int8_t yang_str2int8(const char *value); | |
52 | extern struct yang_data *yang_data_new_int8(const char *xpath, int8_t value); | |
53 | extern int8_t yang_dnode_get_int8(const struct lyd_node *dnode, | |
54 | const char *xpath_fmt, ...); | |
55 | extern int8_t yang_get_default_int8(const char *xpath_fmt, ...); | |
56 | ||
57 | /* int16 */ | |
58 | extern int16_t yang_str2int16(const char *value); | |
59 | extern struct yang_data *yang_data_new_int16(const char *xpath, int16_t value); | |
60 | extern int16_t yang_dnode_get_int16(const struct lyd_node *dnode, | |
61 | const char *xpath_fmt, ...); | |
62 | extern int16_t yang_get_default_int16(const char *xpath_fmt, ...); | |
63 | ||
64 | /* int32 */ | |
65 | extern int32_t yang_str2int32(const char *value); | |
66 | extern struct yang_data *yang_data_new_int32(const char *xpath, int32_t value); | |
67 | extern int32_t yang_dnode_get_int32(const struct lyd_node *dnode, | |
68 | const char *xpath_fmt, ...); | |
69 | extern int32_t yang_get_default_int32(const char *xpath_fmt, ...); | |
70 | ||
71 | /* int64 */ | |
72 | extern int64_t yang_str2int64(const char *value); | |
73 | extern struct yang_data *yang_data_new_int64(const char *xpath, int64_t value); | |
74 | extern int64_t yang_dnode_get_int64(const struct lyd_node *dnode, | |
75 | const char *xpath_fmt, ...); | |
76 | extern int64_t yang_get_default_int64(const char *xpath_fmt, ...); | |
77 | ||
78 | /* uint8 */ | |
79 | extern uint8_t yang_str2uint8(const char *value); | |
80 | extern struct yang_data *yang_data_new_uint8(const char *xpath, uint8_t value); | |
81 | extern uint8_t yang_dnode_get_uint8(const struct lyd_node *dnode, | |
82 | const char *xpath_fmt, ...); | |
83 | extern uint8_t yang_get_default_uint8(const char *xpath_fmt, ...); | |
84 | ||
85 | /* uint16 */ | |
86 | extern uint16_t yang_str2uint16(const char *value); | |
87 | extern struct yang_data *yang_data_new_uint16(const char *xpath, | |
88 | uint16_t value); | |
89 | extern uint16_t yang_dnode_get_uint16(const struct lyd_node *dnode, | |
90 | const char *xpath_fmt, ...); | |
91 | extern uint16_t yang_get_default_uint16(const char *xpath_fmt, ...); | |
92 | ||
93 | /* uint32 */ | |
94 | extern uint32_t yang_str2uint32(const char *value); | |
95 | extern struct yang_data *yang_data_new_uint32(const char *xpath, | |
96 | uint32_t value); | |
97 | extern uint32_t yang_dnode_get_uint32(const struct lyd_node *dnode, | |
98 | const char *xpath_fmt, ...); | |
99 | extern uint32_t yang_get_default_uint32(const char *xpath_fmt, ...); | |
100 | ||
101 | /* uint64 */ | |
102 | extern uint64_t yang_str2uint64(const char *value); | |
103 | extern struct yang_data *yang_data_new_uint64(const char *xpath, | |
104 | uint64_t value); | |
105 | extern uint64_t yang_dnode_get_uint64(const struct lyd_node *dnode, | |
106 | const char *xpath_fmt, ...); | |
107 | extern uint64_t yang_get_default_uint64(const char *xpath_fmt, ...); | |
108 | ||
109 | /* string */ | |
110 | extern struct yang_data *yang_data_new_string(const char *xpath, | |
111 | const char *value); | |
112 | extern const char *yang_dnode_get_string(const struct lyd_node *dnode, | |
113 | const char *xpath_fmt, ...); | |
114 | extern void yang_dnode_get_string_buf(char *buf, size_t size, | |
115 | const struct lyd_node *dnode, | |
116 | const char *xpath_fmt, ...); | |
117 | extern const char *yang_get_default_string(const char *xpath_fmt, ...); | |
118 | extern void yang_get_default_string_buf(char *buf, size_t size, | |
119 | const char *xpath_fmt, ...); | |
120 | ||
ac313345 | 121 | /* binary */ |
122 | extern struct yang_data *yang_data_new_binary(const char *xpath, | |
123 | const char *value, size_t len); | |
124 | extern size_t yang_dnode_get_binary_buf(char *buf, size_t size, | |
125 | const struct lyd_node *dnode, | |
126 | const char *xpath_fmt, ...); | |
127 | ||
b71df689 CS |
128 | /* empty */ |
129 | extern struct yang_data *yang_data_new_empty(const char *xpath); | |
47cd2234 CS |
130 | extern bool yang_dnode_get_empty(const struct lyd_node *dnode, |
131 | const char *xpath_fmt, ...); | |
b71df689 | 132 | |
eed84494 RW |
133 | /* ip prefix */ |
134 | extern void yang_str2prefix(const char *value, union prefixptr prefix); | |
135 | extern struct yang_data *yang_data_new_prefix(const char *xpath, | |
136 | union prefixconstptr prefix); | |
46fcb2df | 137 | extern void yang_dnode_get_prefix(struct prefix *prefix, |
eed84494 RW |
138 | const struct lyd_node *dnode, |
139 | const char *xpath_fmt, ...); | |
140 | extern void yang_get_default_prefix(union prefixptr var, const char *xpath_fmt, | |
141 | ...); | |
142 | ||
1c2facd1 RW |
143 | /* ipv4 */ |
144 | extern void yang_str2ipv4(const char *value, struct in_addr *addr); | |
145 | extern struct yang_data *yang_data_new_ipv4(const char *xpath, | |
146 | const struct in_addr *addr); | |
147 | extern void yang_dnode_get_ipv4(struct in_addr *addr, | |
148 | const struct lyd_node *dnode, | |
149 | const char *xpath_fmt, ...); | |
150 | extern void yang_get_default_ipv4(struct in_addr *var, const char *xpath_fmt, | |
151 | ...); | |
152 | ||
153 | /* ipv4p */ | |
154 | extern void yang_str2ipv4p(const char *value, union prefixptr prefix); | |
155 | extern struct yang_data *yang_data_new_ipv4p(const char *xpath, | |
70065793 | 156 | union prefixconstptr prefix); |
1c2facd1 RW |
157 | extern void yang_dnode_get_ipv4p(union prefixptr prefix, |
158 | const struct lyd_node *dnode, | |
159 | const char *xpath_fmt, ...); | |
160 | extern void yang_get_default_ipv4p(union prefixptr var, const char *xpath_fmt, | |
161 | ...); | |
162 | ||
163 | /* ipv6 */ | |
164 | extern void yang_str2ipv6(const char *value, struct in6_addr *addr); | |
165 | extern struct yang_data *yang_data_new_ipv6(const char *xpath, | |
166 | const struct in6_addr *addr); | |
167 | extern void yang_dnode_get_ipv6(struct in6_addr *addr, | |
168 | const struct lyd_node *dnode, | |
169 | const char *xpath_fmt, ...); | |
170 | extern void yang_get_default_ipv6(struct in6_addr *var, const char *xpath_fmt, | |
171 | ...); | |
172 | ||
173 | /* ipv6p */ | |
174 | extern void yang_str2ipv6p(const char *value, union prefixptr prefix); | |
175 | extern struct yang_data *yang_data_new_ipv6p(const char *xpath, | |
70065793 | 176 | union prefixconstptr prefix); |
1c2facd1 RW |
177 | extern void yang_dnode_get_ipv6p(union prefixptr prefix, |
178 | const struct lyd_node *dnode, | |
179 | const char *xpath_fmt, ...); | |
180 | extern void yang_get_default_ipv6p(union prefixptr var, const char *xpath_fmt, | |
181 | ...); | |
182 | ||
b0584ad3 QY |
183 | /* ip */ |
184 | extern void yang_str2ip(const char *value, struct ipaddr *addr); | |
185 | extern struct yang_data *yang_data_new_ip(const char *xpath, | |
186 | const struct ipaddr *addr); | |
187 | extern void yang_dnode_get_ip(struct ipaddr *addr, const struct lyd_node *dnode, | |
188 | const char *xpath_fmt, ...); | |
189 | extern void yang_get_default_ip(struct ipaddr *var, const char *xpath_fmt, ...); | |
190 | ||
dd9ef518 CS |
191 | /* mac */ |
192 | extern struct yang_data *yang_data_new_mac(const char *xpath, | |
193 | const struct ethaddr *mac); | |
194 | extern void yang_str2mac(const char *value, struct ethaddr *mac); | |
195 | ||
8d0c8ff5 CS |
196 | /*data-and-time */ |
197 | extern struct yang_data *yang_data_new_date_and_time(const char *xpath, | |
198 | time_t time); | |
199 | ||
200 | /* nexthop enum2str */ | |
cad46cfd CS |
201 | extern const char *yang_nexthop_type2str(uint32_t ntype); |
202 | ||
755100ac | 203 | const char *yang_afi_safi_value2identity(afi_t afi, safi_t safi); |
204 | void yang_afi_safi_identity2value(const char *key, afi_t *afi, safi_t *safi); | |
205 | ||
17e38209 RW |
206 | #ifdef __cplusplus |
207 | } | |
208 | #endif | |
209 | ||
1c2facd1 | 210 | #endif /* _FRR_NORTHBOUND_WRAPPERS_H_ */ |