]> git.proxmox.com Git - mirror_frr.git/blame - lib/yang_wrappers.h
isisd: fix #10505 using base64 encoding
[mirror_frr.git] / lib / yang_wrappers.h
CommitLineData
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
26extern "C" {
27#endif
28
1c2facd1
RW
29/* bool */
30extern bool yang_str2bool(const char *value);
31extern struct yang_data *yang_data_new_bool(const char *xpath, bool value);
32extern bool yang_dnode_get_bool(const struct lyd_node *dnode,
33 const char *xpath_fmt, ...);
34extern bool yang_get_default_bool(const char *xpath_fmt, ...);
35
36/* dec64 */
37extern double yang_str2dec64(const char *xpath, const char *value);
38extern struct yang_data *yang_data_new_dec64(const char *xpath, double value);
39extern double yang_dnode_get_dec64(const struct lyd_node *dnode,
40 const char *xpath_fmt, ...);
41extern double yang_get_default_dec64(const char *xpath_fmt, ...);
42
43/* enum */
44extern int yang_str2enum(const char *xpath, const char *value);
45extern struct yang_data *yang_data_new_enum(const char *xpath, int value);
46extern int yang_dnode_get_enum(const struct lyd_node *dnode,
47 const char *xpath_fmt, ...);
48extern int yang_get_default_enum(const char *xpath_fmt, ...);
49
50/* int8 */
51extern int8_t yang_str2int8(const char *value);
52extern struct yang_data *yang_data_new_int8(const char *xpath, int8_t value);
53extern int8_t yang_dnode_get_int8(const struct lyd_node *dnode,
54 const char *xpath_fmt, ...);
55extern int8_t yang_get_default_int8(const char *xpath_fmt, ...);
56
57/* int16 */
58extern int16_t yang_str2int16(const char *value);
59extern struct yang_data *yang_data_new_int16(const char *xpath, int16_t value);
60extern int16_t yang_dnode_get_int16(const struct lyd_node *dnode,
61 const char *xpath_fmt, ...);
62extern int16_t yang_get_default_int16(const char *xpath_fmt, ...);
63
64/* int32 */
65extern int32_t yang_str2int32(const char *value);
66extern struct yang_data *yang_data_new_int32(const char *xpath, int32_t value);
67extern int32_t yang_dnode_get_int32(const struct lyd_node *dnode,
68 const char *xpath_fmt, ...);
69extern int32_t yang_get_default_int32(const char *xpath_fmt, ...);
70
71/* int64 */
72extern int64_t yang_str2int64(const char *value);
73extern struct yang_data *yang_data_new_int64(const char *xpath, int64_t value);
74extern int64_t yang_dnode_get_int64(const struct lyd_node *dnode,
75 const char *xpath_fmt, ...);
76extern int64_t yang_get_default_int64(const char *xpath_fmt, ...);
77
78/* uint8 */
79extern uint8_t yang_str2uint8(const char *value);
80extern struct yang_data *yang_data_new_uint8(const char *xpath, uint8_t value);
81extern uint8_t yang_dnode_get_uint8(const struct lyd_node *dnode,
82 const char *xpath_fmt, ...);
83extern uint8_t yang_get_default_uint8(const char *xpath_fmt, ...);
84
85/* uint16 */
86extern uint16_t yang_str2uint16(const char *value);
87extern struct yang_data *yang_data_new_uint16(const char *xpath,
88 uint16_t value);
89extern uint16_t yang_dnode_get_uint16(const struct lyd_node *dnode,
90 const char *xpath_fmt, ...);
91extern uint16_t yang_get_default_uint16(const char *xpath_fmt, ...);
92
93/* uint32 */
94extern uint32_t yang_str2uint32(const char *value);
95extern struct yang_data *yang_data_new_uint32(const char *xpath,
96 uint32_t value);
97extern uint32_t yang_dnode_get_uint32(const struct lyd_node *dnode,
98 const char *xpath_fmt, ...);
99extern uint32_t yang_get_default_uint32(const char *xpath_fmt, ...);
100
101/* uint64 */
102extern uint64_t yang_str2uint64(const char *value);
103extern struct yang_data *yang_data_new_uint64(const char *xpath,
104 uint64_t value);
105extern uint64_t yang_dnode_get_uint64(const struct lyd_node *dnode,
106 const char *xpath_fmt, ...);
107extern uint64_t yang_get_default_uint64(const char *xpath_fmt, ...);
108
109/* string */
110extern struct yang_data *yang_data_new_string(const char *xpath,
111 const char *value);
112extern const char *yang_dnode_get_string(const struct lyd_node *dnode,
113 const char *xpath_fmt, ...);
114extern void yang_dnode_get_string_buf(char *buf, size_t size,
115 const struct lyd_node *dnode,
116 const char *xpath_fmt, ...);
117extern const char *yang_get_default_string(const char *xpath_fmt, ...);
118extern void yang_get_default_string_buf(char *buf, size_t size,
119 const char *xpath_fmt, ...);
120
ac313345 121/* binary */
122extern struct yang_data *yang_data_new_binary(const char *xpath,
123 const char *value, size_t len);
124extern 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 */
129extern struct yang_data *yang_data_new_empty(const char *xpath);
47cd2234
CS
130extern bool yang_dnode_get_empty(const struct lyd_node *dnode,
131 const char *xpath_fmt, ...);
b71df689 132
eed84494
RW
133/* ip prefix */
134extern void yang_str2prefix(const char *value, union prefixptr prefix);
135extern struct yang_data *yang_data_new_prefix(const char *xpath,
136 union prefixconstptr prefix);
46fcb2df 137extern void yang_dnode_get_prefix(struct prefix *prefix,
eed84494
RW
138 const struct lyd_node *dnode,
139 const char *xpath_fmt, ...);
140extern void yang_get_default_prefix(union prefixptr var, const char *xpath_fmt,
141 ...);
142
1c2facd1
RW
143/* ipv4 */
144extern void yang_str2ipv4(const char *value, struct in_addr *addr);
145extern struct yang_data *yang_data_new_ipv4(const char *xpath,
146 const struct in_addr *addr);
147extern void yang_dnode_get_ipv4(struct in_addr *addr,
148 const struct lyd_node *dnode,
149 const char *xpath_fmt, ...);
150extern void yang_get_default_ipv4(struct in_addr *var, const char *xpath_fmt,
151 ...);
152
153/* ipv4p */
154extern void yang_str2ipv4p(const char *value, union prefixptr prefix);
155extern struct yang_data *yang_data_new_ipv4p(const char *xpath,
70065793 156 union prefixconstptr prefix);
1c2facd1
RW
157extern void yang_dnode_get_ipv4p(union prefixptr prefix,
158 const struct lyd_node *dnode,
159 const char *xpath_fmt, ...);
160extern void yang_get_default_ipv4p(union prefixptr var, const char *xpath_fmt,
161 ...);
162
163/* ipv6 */
164extern void yang_str2ipv6(const char *value, struct in6_addr *addr);
165extern struct yang_data *yang_data_new_ipv6(const char *xpath,
166 const struct in6_addr *addr);
167extern void yang_dnode_get_ipv6(struct in6_addr *addr,
168 const struct lyd_node *dnode,
169 const char *xpath_fmt, ...);
170extern void yang_get_default_ipv6(struct in6_addr *var, const char *xpath_fmt,
171 ...);
172
173/* ipv6p */
174extern void yang_str2ipv6p(const char *value, union prefixptr prefix);
175extern struct yang_data *yang_data_new_ipv6p(const char *xpath,
70065793 176 union prefixconstptr prefix);
1c2facd1
RW
177extern void yang_dnode_get_ipv6p(union prefixptr prefix,
178 const struct lyd_node *dnode,
179 const char *xpath_fmt, ...);
180extern void yang_get_default_ipv6p(union prefixptr var, const char *xpath_fmt,
181 ...);
182
b0584ad3
QY
183/* ip */
184extern void yang_str2ip(const char *value, struct ipaddr *addr);
185extern struct yang_data *yang_data_new_ip(const char *xpath,
186 const struct ipaddr *addr);
187extern void yang_dnode_get_ip(struct ipaddr *addr, const struct lyd_node *dnode,
188 const char *xpath_fmt, ...);
189extern void yang_get_default_ip(struct ipaddr *var, const char *xpath_fmt, ...);
190
dd9ef518
CS
191/* mac */
192extern struct yang_data *yang_data_new_mac(const char *xpath,
193 const struct ethaddr *mac);
194extern void yang_str2mac(const char *value, struct ethaddr *mac);
195
8d0c8ff5
CS
196/*data-and-time */
197extern struct yang_data *yang_data_new_date_and_time(const char *xpath,
198 time_t time);
199
200/* nexthop enum2str */
cad46cfd
CS
201extern const char *yang_nexthop_type2str(uint32_t ntype);
202
755100ac 203const char *yang_afi_safi_value2identity(afi_t afi, safi_t safi);
204void 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_ */