On 12/19/2016 10:02 PM, Hans Dedecker wrote: > On Sun, Dec 11, 2016 at 3:03 AM, Matthias Schiffer > <mschif...@universe-factory.net> wrote: >> Add a new boolean attribute ip6preferred to the static protocol which can >> be set to 0 to mark IPv6 addresses as deprecated (set the preferred >> lifetime to 0). This is useful to configure addresses that may be used for >> incoming, but not for outgoing connections unless bound explicitly. > Hi, > > Thx for the patch but for greater flexibility I would rather prefer > being able to configure the preferred and valid lifetime of the IPv6 > address. In case no preferred and valid lifetime is configured the > IPv6 address has an infinite lifetime as now; setting the IPv6 address > as deprecated can then be done by setting preferred lifetime to 0. > > Hans
For dynamically assigned addresses (from proto handlers), lifetimes are already configurable. For static addresses, a finite lifetime doesn't really make sense IMO, as it would be relative to... the time netifd was reading the configuration or something? What might make a little sense would be an option to specify an absolute time as EOL, but I don't see a usecase for that either. Matthias >> >> Signed-off-by: Matthias Schiffer <mschif...@universe-factory.net> >> --- >> proto.c | 18 +++++++++++++----- >> 1 file changed, 13 insertions(+), 5 deletions(-) >> >> diff --git a/proto.c b/proto.c >> index 23304f3..a8642db 100644 >> --- a/proto.c >> +++ b/proto.c >> @@ -36,6 +36,7 @@ enum { >> OPT_GATEWAY, >> OPT_IP6GW, >> OPT_IP6PREFIX, >> + OPT_IP6PREFERRED, >> __OPT_MAX, >> }; >> >> @@ -47,6 +48,7 @@ static const struct blobmsg_policy >> proto_ip_attributes[__OPT_MAX] = { >> [OPT_GATEWAY] = { .name = "gateway", .type = BLOBMSG_TYPE_STRING }, >> [OPT_IP6GW] = { .name = "ip6gw", .type = BLOBMSG_TYPE_STRING }, >> [OPT_IP6PREFIX] = { .name = "ip6prefix", .type = BLOBMSG_TYPE_ARRAY >> }, >> + [OPT_IP6PREFERRED] = { .name = "ip6preferred", .type = >> BLOBMSG_TYPE_BOOL }, >> }; >> >> static const struct uci_blob_param_info proto_ip_attr_info[__OPT_MAX] = { >> @@ -113,7 +115,7 @@ alloc_device_addr(bool v6, bool ext) >> >> static bool >> parse_addr(struct interface *iface, const char *str, bool v6, int mask, >> - bool ext, uint32_t broadcast) >> + bool ext, uint32_t broadcast, bool pref) >> { >> struct device_addr *addr; >> int af = v6 ? AF_INET6 : AF_INET; >> @@ -136,6 +138,9 @@ parse_addr(struct interface *iface, const char *str, >> bool v6, int mask, >> if (broadcast) >> addr->broadcast = broadcast; >> >> + if (!pref) >> + addr->preferred_until = system_get_rtime(); >> + >> vlist_add(&iface->proto_ip.addr, &addr->node, &addr->flags); >> return true; >> >> @@ -148,7 +153,7 @@ error: >> >> static int >> parse_static_address_option(struct interface *iface, struct blob_attr *attr, >> - bool v6, int netmask, bool ext, uint32_t >> broadcast) >> + bool v6, int netmask, bool ext, uint32_t >> broadcast, bool pref) >> { >> struct blob_attr *cur; >> int n_addr = 0; >> @@ -160,7 +165,7 @@ parse_static_address_option(struct interface *iface, >> struct blob_attr *attr, >> >> n_addr++; >> if (!parse_addr(iface, blobmsg_data(cur), v6, netmask, ext, >> - broadcast)) >> + broadcast, pref)) >> return -1; >> } >> >> @@ -400,6 +405,7 @@ proto_apply_static_ip_settings(struct interface *iface, >> struct blob_attr *attr) >> struct blob_attr *cur; >> const char *error; >> unsigned int netmask = 32; >> + bool ip6pref; >> int n_v4 = 0, n_v6 = 0; >> struct in_addr bcast = {}; >> >> @@ -420,13 +426,15 @@ proto_apply_static_ip_settings(struct interface >> *iface, struct blob_attr *attr) >> } >> } >> >> + ip6pref = blobmsg_get_bool_default(tb[OPT_IP6PREFERRED], true); >> + >> if ((cur = tb[OPT_IPADDR])) >> n_v4 = parse_static_address_option(iface, cur, false, >> - netmask, false, bcast.s_addr); >> + netmask, false, bcast.s_addr, true); >> >> if ((cur = tb[OPT_IP6ADDR])) >> n_v6 = parse_static_address_option(iface, cur, true, >> - 128, false, 0); >> + 128, false, 0, ip6pref); >> >> if ((cur = tb[OPT_IP6PREFIX])) >> if (parse_prefix_list(iface, cur) < 0) >> -- >> 2.10.2 >> >> >> _______________________________________________ >> Lede-dev mailing list >> Lede-dev@lists.infradead.org >> http://lists.infradead.org/mailman/listinfo/lede-dev
signature.asc
Description: OpenPGP digital signature
_______________________________________________ Lede-dev mailing list Lede-dev@lists.infradead.org http://lists.infradead.org/mailman/listinfo/lede-dev