]> git.proxmox.com Git - mirror_frr.git/blob - lib/yang_wrappers.h
zebra, lib: fix the ZEBRA_INTERFACE_VRF_UPDATE zapi message
[mirror_frr.git] / lib / yang_wrappers.h
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
25 /* bool */
26 extern bool yang_str2bool(const char *value);
27 extern struct yang_data *yang_data_new_bool(const char *xpath, bool value);
28 extern bool yang_dnode_get_bool(const struct lyd_node *dnode,
29 const char *xpath_fmt, ...);
30 extern bool yang_get_default_bool(const char *xpath_fmt, ...);
31
32 /* dec64 */
33 extern double yang_str2dec64(const char *xpath, const char *value);
34 extern struct yang_data *yang_data_new_dec64(const char *xpath, double value);
35 extern double yang_dnode_get_dec64(const struct lyd_node *dnode,
36 const char *xpath_fmt, ...);
37 extern double yang_get_default_dec64(const char *xpath_fmt, ...);
38
39 /* enum */
40 extern int yang_str2enum(const char *xpath, const char *value);
41 extern struct yang_data *yang_data_new_enum(const char *xpath, int value);
42 extern int yang_dnode_get_enum(const struct lyd_node *dnode,
43 const char *xpath_fmt, ...);
44 extern int yang_get_default_enum(const char *xpath_fmt, ...);
45
46 /* int8 */
47 extern int8_t yang_str2int8(const char *value);
48 extern struct yang_data *yang_data_new_int8(const char *xpath, int8_t value);
49 extern int8_t yang_dnode_get_int8(const struct lyd_node *dnode,
50 const char *xpath_fmt, ...);
51 extern int8_t yang_get_default_int8(const char *xpath_fmt, ...);
52
53 /* int16 */
54 extern int16_t yang_str2int16(const char *value);
55 extern struct yang_data *yang_data_new_int16(const char *xpath, int16_t value);
56 extern int16_t yang_dnode_get_int16(const struct lyd_node *dnode,
57 const char *xpath_fmt, ...);
58 extern int16_t yang_get_default_int16(const char *xpath_fmt, ...);
59
60 /* int32 */
61 extern int32_t yang_str2int32(const char *value);
62 extern struct yang_data *yang_data_new_int32(const char *xpath, int32_t value);
63 extern int32_t yang_dnode_get_int32(const struct lyd_node *dnode,
64 const char *xpath_fmt, ...);
65 extern int32_t yang_get_default_int32(const char *xpath_fmt, ...);
66
67 /* int64 */
68 extern int64_t yang_str2int64(const char *value);
69 extern struct yang_data *yang_data_new_int64(const char *xpath, int64_t value);
70 extern int64_t yang_dnode_get_int64(const struct lyd_node *dnode,
71 const char *xpath_fmt, ...);
72 extern int64_t yang_get_default_int64(const char *xpath_fmt, ...);
73
74 /* uint8 */
75 extern uint8_t yang_str2uint8(const char *value);
76 extern struct yang_data *yang_data_new_uint8(const char *xpath, uint8_t value);
77 extern uint8_t yang_dnode_get_uint8(const struct lyd_node *dnode,
78 const char *xpath_fmt, ...);
79 extern uint8_t yang_get_default_uint8(const char *xpath_fmt, ...);
80
81 /* uint16 */
82 extern uint16_t yang_str2uint16(const char *value);
83 extern struct yang_data *yang_data_new_uint16(const char *xpath,
84 uint16_t value);
85 extern uint16_t yang_dnode_get_uint16(const struct lyd_node *dnode,
86 const char *xpath_fmt, ...);
87 extern uint16_t yang_get_default_uint16(const char *xpath_fmt, ...);
88
89 /* uint32 */
90 extern uint32_t yang_str2uint32(const char *value);
91 extern struct yang_data *yang_data_new_uint32(const char *xpath,
92 uint32_t value);
93 extern uint32_t yang_dnode_get_uint32(const struct lyd_node *dnode,
94 const char *xpath_fmt, ...);
95 extern uint32_t yang_get_default_uint32(const char *xpath_fmt, ...);
96
97 /* uint64 */
98 extern uint64_t yang_str2uint64(const char *value);
99 extern struct yang_data *yang_data_new_uint64(const char *xpath,
100 uint64_t value);
101 extern uint64_t yang_dnode_get_uint64(const struct lyd_node *dnode,
102 const char *xpath_fmt, ...);
103 extern uint64_t yang_get_default_uint64(const char *xpath_fmt, ...);
104
105 /* string */
106 extern struct yang_data *yang_data_new_string(const char *xpath,
107 const char *value);
108 extern const char *yang_dnode_get_string(const struct lyd_node *dnode,
109 const char *xpath_fmt, ...);
110 extern void yang_dnode_get_string_buf(char *buf, size_t size,
111 const struct lyd_node *dnode,
112 const char *xpath_fmt, ...);
113 extern const char *yang_get_default_string(const char *xpath_fmt, ...);
114 extern void yang_get_default_string_buf(char *buf, size_t size,
115 const char *xpath_fmt, ...);
116
117 /* ipv4 */
118 extern void yang_str2ipv4(const char *value, struct in_addr *addr);
119 extern struct yang_data *yang_data_new_ipv4(const char *xpath,
120 const struct in_addr *addr);
121 extern void yang_dnode_get_ipv4(struct in_addr *addr,
122 const struct lyd_node *dnode,
123 const char *xpath_fmt, ...);
124 extern void yang_get_default_ipv4(struct in_addr *var, const char *xpath_fmt,
125 ...);
126
127 /* ipv4p */
128 extern void yang_str2ipv4p(const char *value, union prefixptr prefix);
129 extern struct yang_data *yang_data_new_ipv4p(const char *xpath,
130 union prefixconstptr prefix);
131 extern void yang_dnode_get_ipv4p(union prefixptr prefix,
132 const struct lyd_node *dnode,
133 const char *xpath_fmt, ...);
134 extern void yang_get_default_ipv4p(union prefixptr var, const char *xpath_fmt,
135 ...);
136
137 /* ipv6 */
138 extern void yang_str2ipv6(const char *value, struct in6_addr *addr);
139 extern struct yang_data *yang_data_new_ipv6(const char *xpath,
140 const struct in6_addr *addr);
141 extern void yang_dnode_get_ipv6(struct in6_addr *addr,
142 const struct lyd_node *dnode,
143 const char *xpath_fmt, ...);
144 extern void yang_get_default_ipv6(struct in6_addr *var, const char *xpath_fmt,
145 ...);
146
147 /* ipv6p */
148 extern void yang_str2ipv6p(const char *value, union prefixptr prefix);
149 extern struct yang_data *yang_data_new_ipv6p(const char *xpath,
150 union prefixconstptr prefix);
151 extern void yang_dnode_get_ipv6p(union prefixptr prefix,
152 const struct lyd_node *dnode,
153 const char *xpath_fmt, ...);
154 extern void yang_get_default_ipv6p(union prefixptr var, const char *xpath_fmt,
155 ...);
156
157 #endif /* _FRR_NORTHBOUND_WRAPPERS_H_ */