OPT_BROADCAST,
OPT_GATEWAY,
OPT_IP6GW,
- OPT_DNS,
- OPT_DNS_SEARCH,
__OPT_MAX,
};
[OPT_BROADCAST] = { .name = "broadcast", .type = BLOBMSG_TYPE_STRING },
[OPT_GATEWAY] = { .name = "gateway", .type = BLOBMSG_TYPE_STRING },
[OPT_IP6GW] = { .name = "ip6gw", .type = BLOBMSG_TYPE_STRING },
- [OPT_DNS] = { .name = "dns", .type = BLOBMSG_TYPE_ARRAY },
- [OPT_DNS_SEARCH] = { .name = "dns_search", .type = BLOBMSG_TYPE_ARRAY },
};
static const union config_param_info proto_ip_attr_info[__OPT_MAX] = {
[OPT_IPADDR] = { .type = BLOBMSG_TYPE_STRING },
[OPT_IP6ADDR] = { .type = BLOBMSG_TYPE_STRING },
- [OPT_DNS] = { .type = BLOBMSG_TYPE_STRING },
};
const struct config_param_list proto_ip_attr = {
ADDR_IPADDR,
ADDR_MASK,
ADDR_BROADCAST,
+ ADDR_PTP,
__ADDR_MAX
};
[ADDR_IPADDR] = { .name = "ipaddr", .type = BLOBMSG_TYPE_STRING },
[ADDR_MASK] = { .name = "mask", .type = BLOBMSG_TYPE_STRING },
[ADDR_BROADCAST] = { .name = "broadcast", .type = BLOBMSG_TYPE_STRING },
+ [ADDR_PTP] = { .name = "ptp", .type = BLOBMSG_TYPE_STRING },
};
unsigned int
if (!inet_pton(v6 ? AF_INET6 : AF_INET, blobmsg_data(cur), &addr->addr))
goto error;
- if (!v6 && (cur = tb[ADDR_BROADCAST])) {
- if (!inet_pton(AF_INET, blobmsg_data(cur), &addr->broadcast))
+ if (!v6) {
+ if ((cur = tb[ADDR_BROADCAST]) &&
+ !inet_pton(AF_INET, blobmsg_data(cur), &addr->broadcast))
+ goto error;
+ if ((cur = tb[ADDR_PTP]) &&
+ !inet_pton(AF_INET, blobmsg_data(cur), &addr->point_to_point))
goto error;
}
goto out;
}
- if ((cur = tb[OPT_DNS]))
- interface_add_dns_server_list(&iface->proto_ip, cur);
-
- if ((cur = tb[OPT_DNS_SEARCH]))
- interface_add_dns_search_list(&iface->proto_ip, cur);
-
return 0;
error:
goto out;
}
- if ((cur = tb[OPT_DNS]))
- interface_add_dns_server_list(&iface->proto_ip, cur);
-
- if ((cur = tb[OPT_DNS_SEARCH]))
- interface_add_dns_search_list(&iface->proto_ip, cur);
-
return 0;
error:
}
void
+proto_dump_handlers(struct blob_buf *b)
+{
+ struct proto_handler *p;
+ void *c;
+
+ avl_for_each_element(&handlers, p, avl) {
+ c = blobmsg_open_table(b, p->name);
+ blobmsg_add_u8(b, "no_device", !!(p->flags & PROTO_FLAG_NODEV));
+ blobmsg_close_table(b, c);
+ }
+}
+
+void
proto_init_interface(struct interface *iface, struct blob_attr *attr)
{
const struct proto_handler *proto = iface->proto_handler;