Hello Antonio, With 31-bit IPv4 prefix, only two addresses can be provided with the single host bit. Neither the network address nor the broadcast address makes sense anymore in such "subnet", as it's basically for point-to-point link. Assigning such address with a broadcast address will prevent it from working properly anyway.
While we can achieve the equivalence with the soon-to-be-removed p2p topology, or using a 30-bit prefix to avoid the bug (that "wastes" two addresses), I don't see why it shouldn't be fixed, as it's a proper standard (even though it may not be supported on every platform). Note that this has nothing to do with the net30 topology but the subnet topology. Sorry for not having elaborated in the commit message, as I thought the RFC is well-known and the patch already speaks for itself. If you are okay with it I can resend it with the above as its commit message. Regards, Tom On Sun, 3 Nov 2019 at 18:43, Antonio Quartulli <a...@unstable.cc> wrote: > > Hi Tom, > > first of all, thanks a lot for your contribution! > > On 03/11/2019 06:30, Tom Yan wrote: > > --- > > src/openvpn/networking_iproute2.c | 6 ++++-- > > 1 file changed, 4 insertions(+), 2 deletions(-) > > > > diff --git a/src/openvpn/networking_iproute2.c > > b/src/openvpn/networking_iproute2.c > > index 1ddeb5cf..4e2435c1 100644 > > --- a/src/openvpn/networking_iproute2.c > > +++ b/src/openvpn/networking_iproute2.c > > @@ -98,8 +98,10 @@ net_addr_v4_add(openvpn_net_ctx_t *ctx, const char > > *iface, > > const char *addr_str = print_in_addr_t(*addr, 0, &ctx->gc); > > const char *brd_str = print_in_addr_t(*broadcast, 0, &ctx->gc); > > > > - argv_printf(&argv, "%s addr add dev %s %s/%d broadcast %s", > > iproute_path, > > - iface, addr_str, prefixlen, brd_str); > > + argv_printf(&argv, "%s addr add dev %s %s/%d", iproute_path, > > + iface, addr_str, prefixlen); > > + if (prefixlen < 31) > > + argv_printf_cat(&argv, " broadcast %s", brd_str); > > Unfortunately I am not able to grasp this fix entirely.. (maybe because > I don't know RFC3021). > > Would you mind explaining *why* this is needed? > > What is this change fixing? Can you make an example where the actual > code fails and how this change is fixing it? > > > It would also be very nice if you could add such information to the > commit message, so that it will remain in the git history. > > > Thanks a lot! > Regards, > > > argv_msg(M_INFO, &argv); > > openvpn_execve_check(&argv, ctx->es, S_FATAL, "Linux ip addr add > > failed"); > > > > > > -- > Antonio Quartulli _______________________________________________ Openvpn-devel mailing list Openvpn-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/openvpn-devel