nbd, did you have time to look at this new version of the patch?

Thanks,
Baptiste

On Mon, Sep 14, 2015 at 12:25:33PM +0200, Baptiste Jonglez wrote:
> From: Baptiste Jonglez <g...@bitsofnetworks.org>
> 
> A /31-addressed interface requires a broadcast address of 255.255.255.255,
> because there is no room for a proper broadcast address.  Without this,
> any packet destinated to the other end of the link is sent as broadcast,
> which is incorrect.
> 
> For consistency with the Linux kernel, /32-addressed interfaces are
> treated in the same way.
> 
> Signed-off-by: Baptiste Jonglez <g...@bitsofnetworks.org>
> ---
>  interface-ip.c | 16 +++++++++++-----
>  1 file changed, 11 insertions(+), 5 deletions(-)
> 
> diff --git a/interface-ip.c b/interface-ip.c
> index 8eb2ff3..0c72e46 100644
> --- a/interface-ip.c
> +++ b/interface-ip.c
> @@ -473,11 +473,17 @@ interface_update_proto_addr(struct vlist_tree *tree,
>               if ((a_new->flags & DEVADDR_FAMILY) == DEVADDR_INET4 &&
>                   !a_new->broadcast) {
>  
> -                     uint32_t mask = ~0;
> -                     uint32_t *a = (uint32_t *) &a_new->addr;
> -
> -                     mask >>= a_new->mask;
> -                     a_new->broadcast = *a | htonl(mask);
> +                     /* /31 and /32 addressing need 255.255.255.255
> +                      * as broadcast address. */
> +                     if (a_new->mask >= 31) {
> +                             a_new->broadcast = (uint32_t) ~0;
> +                     } else {
> +                             uint32_t mask = ~0;
> +                             uint32_t *a = (uint32_t *) &a_new->addr;
> +
> +                             mask >>= a_new->mask;
> +                             a_new->broadcast = *a | htonl(mask);
> +                     }
>               }
>       }
>  

Attachment: pgptA0mfanG4W.pgp
Description: PGP signature

_______________________________________________
openwrt-devel mailing list
openwrt-devel@lists.openwrt.org
https://lists.openwrt.org/cgi-bin/mailman/listinfo/openwrt-devel

Reply via email to