[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Bug#901255: netcfg-static: Unable to configure fe80::1 as a gateway



Igor Scheller <debian@igorscheller.de> writes:

From 6bff2dee11a8d5493f87ec541f854e3897ef6a9a Mon Sep 17 00:00:00 2001
> From: Igor Scheller <igor.scheller@igorshp.de>
> Date: Mon, 11 Jun 2018 23:52:37 +0200
> Subject: [PATCH] Added support for fe80 addresses as gateway
>
> ---
>  netcfg-common.c                      |  5 ++++-
>  static.c                             |  3 ++-
>  test/test_netcfg_gateway_reachable.c | 24 ++++++++++++++++++++++++
>  3 files changed, 30 insertions(+), 2 deletions(-)
>
> diff --git a/netcfg-common.c b/netcfg-common.c
> index c6d1d8d5..007c1875 100644
> --- a/netcfg-common.c
> +++ b/netcfg-common.c
> @@ -1677,8 +1677,11 @@ int netcfg_gateway_reachable(const struct netcfg_interface *interface)
>      if (interface->address_family == AF_INET) {
>          return (gw_addr.in4.s_addr && ((gw_addr.in4.s_addr & mask.in4.s_addr) == net.in4.s_addr));
>      } else if (interface->address_family == AF_INET6) {
> +        if ((ntohs(gw_addr.in6.s6_addr32[0]) & 0xffc0) == (0xfe80 & 0xffc0)) {
> +            return 1;
> +        }
> +
>          int i;
> -        
>          for (i = 0; i < 4; i++) {
>              if ((gw_addr.in6.s6_addr32[i] & mask.in6.s6_addr32[i]) != net.in6.s6_addr32[i]) {
>                  return 0;




Huh?  What is this?  There is no "gateway must be in subnet" requirement
in IPv6.  The gateway must only be reachable, which means that you must
be able to resolve the L2 address using ND. Any other "is gateway
reachable" test is bogus. "subnet" is completely irrelevant.

Or did I  misunderstand what this code tries to do?



Bjørn


Reply to: