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