1 /* SPDX-License-Identifier: Apache-2.0
2 * Copyright (c) 2023 Cisco Systems, Inc.
5 #ifndef _VNET_DEV_ARGS_H_
6 #define _VNET_DEV_ARGS_H_
8 #include <vppinfra/clib.h>
9 #include <vnet/dev/errors.h>
11 #define foreach_vnet_dev_arg_type \
12 _ (BOOL, "%u", boolean) \
13 _ (UINT32, "%u", uint32) \
14 _ (STRING, "\'%v\'", string)
19 #define _(n, f, v) VNET_DEV_ARG_TYPE_##n,
20 foreach_vnet_dev_arg_type
22 } __clib_packed vnet_dev_arg_type_t;
29 } vnet_dev_arg_value_t;
35 vnet_dev_arg_type_t type;
40 vnet_dev_arg_value_t val;
41 vnet_dev_arg_value_t default_val;
44 #define VNET_DEV_ARG_BOOL(ud, n, d, ...) \
46 .type = VNET_DEV_ARG_TYPE_BOOL, .id = ud, .name = n, .desc = d, \
49 #define VNET_DEV_ARG_UINT32(ud, n, d, ...) \
51 .type = VNET_DEV_ARG_TYPE_UINT32, .id = ud, .name = n, .desc = d, \
54 #define VNET_DEV_ARG_STRING(ud, n, d, ...) \
56 .type = VNET_DEV_ARG_TYPE_STRING, .id = ud, .name = n, .desc = d, \
59 #define VNET_DEV_ARG_END() \
61 .type = VNET_DEV_ARG_END \
64 #define VNET_DEV_ARGS(...) \
65 (vnet_dev_arg_t[]) { __VA_ARGS__, VNET_DEV_ARG_END () }
67 #define foreach_vnet_dev_args(a, d) \
68 for (typeof ((d)->args[0]) *(a) = (d)->args; (a) < vec_end ((d)->args); \
70 #define foreach_vnet_dev_port_args(a, p) \
71 for (typeof ((p)->args[0]) *(a) = (p)->args; (a) < vec_end ((p)->args); \
74 #endif /* _VNET_DEV_ARGS_H_ */