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_6RD_PREFIX
] = {.name
= "6rd-prefix", .type
= BLOBMSG_TYPE_STRING
},
27 [TUNNEL_ATTR_6RD_RELAY_PREFIX
] = { .name
= "6rd-relay-prefix", .type
= BLOBMSG_TYPE_STRING
},
28 [TUNNEL_ATTR_LINK
] = { .name
= "link", .type
= BLOBMSG_TYPE_STRING
},
29 [TUNNEL_ATTR_FMRS
] = { .name
= "fmrs", .type
= BLOBMSG_TYPE_ARRAY
},
30 [TUNNEL_ATTR_INFO
] = { .name
= "info", .type
= BLOBMSG_TYPE_STRING
},
31 [TUNNEL_ATTR_DATA
] = { .name
= "data", .type
= BLOBMSG_TYPE_TABLE
},
34 const struct uci_blob_param_list tunnel_attr_list
= {
35 .n_params
= __TUNNEL_ATTR_MAX
,
36 .params
= tunnel_attrs
,
39 static const struct blobmsg_policy vxlan_data_attrs
[__VXLAN_DATA_ATTR_MAX
] = {
40 [VXLAN_DATA_ATTR_ID
] = { .name
= "id", .type
= BLOBMSG_TYPE_INT32
},
41 [VXLAN_DATA_ATTR_PORT
] = { .name
= "port", .type
= BLOBMSG_TYPE_INT32
},
42 [VXLAN_DATA_ATTR_MACADDR
] = { .name
= "macaddr", .type
= BLOBMSG_TYPE_STRING
},
45 const struct uci_blob_param_list vxlan_data_attr_list
= {
46 .n_params
= __VXLAN_DATA_ATTR_MAX
,
47 .params
= vxlan_data_attrs
,
50 static const struct blobmsg_policy gre_data_attrs
[__GRE_DATA_ATTR_MAX
] = {
51 [GRE_DATA_IKEY
] = { .name
= "ikey", .type
= BLOBMSG_TYPE_INT32
},
52 [GRE_DATA_OKEY
] = { .name
= "okey", .type
= BLOBMSG_TYPE_INT32
},
53 [GRE_DATA_ICSUM
] = { .name
= "icsum", .type
= BLOBMSG_TYPE_BOOL
},
54 [GRE_DATA_OCSUM
] = { .name
= "ocsum", .type
= BLOBMSG_TYPE_BOOL
},
55 [GRE_DATA_ISEQNO
] = { .name
= "iseqno", .type
= BLOBMSG_TYPE_BOOL
},
56 [GRE_DATA_OSEQNO
] = { .name
= "oseqno", .type
= BLOBMSG_TYPE_BOOL
},
59 const struct uci_blob_param_list gre_data_attr_list
= {
60 .n_params
= __GRE_DATA_ATTR_MAX
,
61 .params
= gre_data_attrs
,
64 void system_fd_set_cloexec(int fd
)
67 fcntl(fd
, F_SETFD
, fcntl(fd
, F_GETFD
) | FD_CLOEXEC
);