Download raw body.
ifconfig: add and document vxlan "[-]endpoint" command
On Sun, Jan 05, 2025 at 01:41:21PM +0100, Denis Fondras wrote:
> This diff adds a command to remove an endpoint when vxlan(4) is in endpoint
> mode.
> Also add some documentation for the "endpoint" command. Change is not 100%
> satisfaying as the "endpoint" and "-endpoint" does not take the same number of
> arguments. Any opinion ?
they're analogous to cp/mv/etc taking source and target args, and rm
only taking target. the only reason -endpoint would take multiple
arguments is if you can point multicast/broadcast ethernet addrs at
multiple tunnel endpoints, so you would need to specify which of these
entries you're removing.
go for it, ok by me.
>
> Index: brconfig.c
> ===================================================================
> RCS file: /cvs/src/sbin/ifconfig/brconfig.c,v
> diff -u -p -r1.32 brconfig.c
> --- brconfig.c 23 Nov 2023 03:38:34 -0000 1.32
> +++ brconfig.c 5 Jan 2025 12:33:53 -0000
> @@ -693,6 +693,29 @@ bridge_addendpoint(const char *endpoint,
> }
>
> void
> +bridge_delendpoint(const char *addr, int d)
> +{
> + struct ifbareq ifba;
> + struct ether_addr *ea;
> + int ecode;
> +
> + ea = ether_aton(addr);
> + if (ea == NULL) {
> + errx(1, "%s -endpoint %s: invalid Ethernet address",
> + ifname, addr);
> + }
> +
> + memset(&ifba, 0, sizeof(ifba));
> + strlcpy(ifba.ifba_name, ifname, sizeof(ifba.ifba_name));
> + strlcpy(ifba.ifba_ifsname, ifname, sizeof(ifba.ifba_ifsname));
> + memcpy(&ifba.ifba_dst, ea, sizeof(struct ether_addr));
> + ifba.ifba_flags = IFBAF_STATIC;
> +
> + if (ioctl(sock, SIOCBRDGDADDR, &ifba) == -1)
> + err(1, "%s -endpoint %s", ifname, addr);
> +}
> +
> +void
> bridge_addrs(const char *delim, int d)
> {
> char dstaddr[NI_MAXHOST];
> Index: ifconfig.8
> ===================================================================
> RCS file: /cvs/src/sbin/ifconfig/ifconfig.8,v
> diff -u -p -r1.400 ifconfig.8
> --- ifconfig.8 9 Jun 2024 16:25:27 -0000 1.400
> +++ ifconfig.8 5 Jan 2025 12:33:53 -0000
> @@ -1841,6 +1841,7 @@ for a complete list of the available pro
> .Bk -words
> .Nm ifconfig
> .Ar tunnel-interface
> +.Op Oo Fl Oc Ns Cm endpoint Ar dest_address dest_mac
> .Op Oo Fl Oc Ns Cm keepalive Ar period count
> .Op Oo Fl Oc Ns Cm parent Ar parent-interface
> .Op Cm rxprio Ar prio
> @@ -1867,6 +1868,20 @@ and
> are all tunnel interfaces.
> The following options are available:
> .Bl -tag -width Ds
> +.It Cm endpoint Ar dest_address dest_mac
> +When
> +.Xr vxlan 4
> +is in endpoint mode, set the tunnel endpoint
> +.Ar dest_address
> +where
> +.Ar dest_mac
> +MAC address can be reached.
> +.It Cm -endpoint Ar dest_mac
> +When
> +.Xr vxlan 4
> +is in endpoint mode, remove the tunnel endpoint for
> +.Ar dest_mac
> +MAC address.
> .It Cm keepalive Ar period count
> Enable
> .Xr gre 4
> Index: ifconfig.c
> ===================================================================
> RCS file: /cvs/src/sbin/ifconfig/ifconfig.c,v
> diff -u -p -r1.474 ifconfig.c
> --- ifconfig.c 29 Jun 2024 12:09:51 -0000 1.474
> +++ ifconfig.c 5 Jan 2025 12:33:53 -0000
> @@ -578,6 +578,7 @@ const struct cmd {
> { "flushall", 0, 0, bridge_flushall },
> { "static", NEXTARG2, 0, NULL, bridge_addaddr },
> { "endpoint", NEXTARG2, 0, NULL, bridge_addendpoint },
> + { "-endpoint", NEXTARG, 0, bridge_delendpoint },
> { "deladdr", NEXTARG, 0, bridge_deladdr },
> { "maxaddr", NEXTARG, 0, bridge_maxaddr },
> { "addr", 0, 0, bridge_addrs },
> @@ -624,7 +625,7 @@ const struct cmd {
> { "wgpeer", NEXTARG, A_WIREGUARD, setwgpeer},
> { "wgdescription", NEXTARG, A_WIREGUARD, setwgpeerdesc},
> { "wgdescr", NEXTARG, A_WIREGUARD, setwgpeerdesc},
> - { "wgendpoint", NEXTARG2, A_WIREGUARD, NULL, setwgpeerep},
> + { "wgendpoint", NEXTARG2, A_WIREGUARD, NULL, setwgpeerep},
> { "wgaip", NEXTARG, A_WIREGUARD, setwgpeeraip},
> { "wgpsk", NEXTARG, A_WIREGUARD, setwgpeerpsk},
> { "wgpka", NEXTARG, A_WIREGUARD, setwgpeerpka},
> Index: ifconfig.h
> ===================================================================
> RCS file: /cvs/src/sbin/ifconfig/ifconfig.h,v
> diff -u -p -r1.5 ifconfig.h
> --- ifconfig.h 23 Nov 2023 03:38:34 -0000 1.5
> +++ ifconfig.h 5 Jan 2025 12:33:53 -0000
> @@ -49,6 +49,7 @@ void bridge_flush(const char *, int);
> void bridge_flushall(const char *, int);
> void bridge_addaddr(const char *, const char *);
> void bridge_addendpoint(const char *, const char *);
> +void bridge_delendpoint(const char *, int);
> void bridge_deladdr(const char *, int);
> void bridge_maxaddr(const char *, int);
> void bridge_addrs(const char *, int);
>
ifconfig: add and document vxlan "[-]endpoint" command