2 * netifd - network interface daemon
3 * Copyright (C) 2012 Felix Fietkau <nbd@openwrt.org>
5 * This program is free software; you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License version 2
7 * as published by the Free Software Foundation
9 * This program is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 * GNU General Public License for more details.
18 static const struct blobmsg_policy tunnel_attrs
[__TUNNEL_ATTR_MAX
] = {
19 [TUNNEL_ATTR_TYPE
] = { .name
= "mode", .type
= BLOBMSG_TYPE_STRING
},
20 [TUNNEL_ATTR_LOCAL
] = { .name
= "local", .type
= BLOBMSG_TYPE_STRING
},
21 [TUNNEL_ATTR_REMOTE
] = { .name
= "remote", .type
= BLOBMSG_TYPE_STRING
},
22 [TUNNEL_ATTR_MTU
] = { .name
= "mtu", .type
= BLOBMSG_TYPE_INT32
},
23 [TUNNEL_ATTR_DF
] = { .name
= "df", .type
= BLOBMSG_TYPE_BOOL
},
24 [TUNNEL_ATTR_TTL
] = { .name
= "ttl", .type
= BLOBMSG_TYPE_INT32
},
25 [TUNNEL_ATTR_TOS
] = { .name
= "tos", .type
= BLOBMSG_TYPE_STRING
},
26 [TUNNEL_ATTR_LINK
] = { .name
= "link", .type
= BLOBMSG_TYPE_STRING
},
27 [TUNNEL_ATTR_DATA
] = { .name
= "data", .type
= BLOBMSG_TYPE_TABLE
},
30 const struct uci_blob_param_list tunnel_attr_list
= {
31 .n_params
= __TUNNEL_ATTR_MAX
,
32 .params
= tunnel_attrs
,
35 static const struct blobmsg_policy vxlan_data_attrs
[__VXLAN_DATA_ATTR_MAX
] = {
36 [VXLAN_DATA_ATTR_ID
] = { .name
= "id", .type
= BLOBMSG_TYPE_INT32
},
37 [VXLAN_DATA_ATTR_PORT
] = { .name
= "port", .type
= BLOBMSG_TYPE_INT32
},
38 [VXLAN_DATA_ATTR_MACADDR
] = { .name
= "macaddr", .type
= BLOBMSG_TYPE_STRING
},
39 [VXLAN_DATA_ATTR_RXCSUM
] = { .name
= "rxcsum", .type
= BLOBMSG_TYPE_BOOL
},
40 [VXLAN_DATA_ATTR_TXCSUM
] = { .name
= "txcsum", .type
= BLOBMSG_TYPE_BOOL
},
43 const struct uci_blob_param_list vxlan_data_attr_list
= {
44 .n_params
= __VXLAN_DATA_ATTR_MAX
,
45 .params
= vxlan_data_attrs
,
48 static const struct blobmsg_policy gre_data_attrs
[__GRE_DATA_ATTR_MAX
] = {
49 [GRE_DATA_IKEY
] = { .name
= "ikey", .type
= BLOBMSG_TYPE_INT32
},
50 [GRE_DATA_OKEY
] = { .name
= "okey", .type
= BLOBMSG_TYPE_INT32
},
51 [GRE_DATA_ICSUM
] = { .name
= "icsum", .type
= BLOBMSG_TYPE_BOOL
},
52 [GRE_DATA_OCSUM
] = { .name
= "ocsum", .type
= BLOBMSG_TYPE_BOOL
},
53 [GRE_DATA_ISEQNO
] = { .name
= "iseqno", .type
= BLOBMSG_TYPE_BOOL
},
54 [GRE_DATA_OSEQNO
] = { .name
= "oseqno", .type
= BLOBMSG_TYPE_BOOL
},
57 const struct uci_blob_param_list gre_data_attr_list
= {
58 .n_params
= __GRE_DATA_ATTR_MAX
,
59 .params
= gre_data_attrs
,
62 static const struct blobmsg_policy vti_data_attrs
[__VTI_DATA_ATTR_MAX
] = {
63 [VTI_DATA_IKEY
] = { .name
= "ikey", .type
= BLOBMSG_TYPE_INT32
},
64 [VTI_DATA_OKEY
] = { .name
= "okey", .type
= BLOBMSG_TYPE_INT32
},
67 const struct uci_blob_param_list vti_data_attr_list
= {
68 .n_params
= __VTI_DATA_ATTR_MAX
,
69 .params
= vti_data_attrs
,
72 static const struct blobmsg_policy sixrd_data_attrs
[__SIXRD_DATA_ATTR_MAX
] = {
73 [SIXRD_DATA_PREFIX
] = { .name
= "prefix", .type
= BLOBMSG_TYPE_STRING
},
74 [SIXRD_DATA_RELAY_PREFIX
] = { .name
= "relay-prefix", .type
= BLOBMSG_TYPE_STRING
},
77 const struct uci_blob_param_list sixrd_data_attr_list
= {
78 .n_params
= __SIXRD_DATA_ATTR_MAX
,
79 .params
= sixrd_data_attrs
,
82 static const struct blobmsg_policy fmr_data_attrs
[__FMR_DATA_ATTR_MAX
] = {
83 [FMR_DATA_PREFIX6
] = { .name
= "prefix6", .type
= BLOBMSG_TYPE_STRING
},
84 [FMR_DATA_PREFIX4
] = { .name
= "prefix4", .type
= BLOBMSG_TYPE_STRING
},
85 [FMR_DATA_EALEN
] = { .name
= "ealen", .type
= BLOBMSG_TYPE_INT32
},
86 [FMR_DATA_OFFSET
] = { .name
= "offset", .type
= BLOBMSG_TYPE_INT32
},
89 const struct uci_blob_param_list fmr_data_attr_list
= {
90 .n_params
= __FMR_DATA_ATTR_MAX
,
91 .params
= fmr_data_attrs
,
94 void system_fd_set_cloexec(int fd
)
97 fcntl(fd
, F_SETFD
, fcntl(fd
, F_GETFD
) | FD_CLOEXEC
);