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