Hi, Is there anything else which I can do, to help this diff reviwed and increase the chance of getting in?
Thread at https://marc.info/?t=163478298600001&r=1&w=2 Last version of the diff at https://marc.info/?l=openbsd-tech&m=167185582521873&q=mbox On Thu, Jan 05, 2023 at 07:41:54PM +0100, Hrvoje Popovski wrote: > On 2.1.2023. 22:01, Mikolaj Kucharski wrote: > > This seems to work fine for me. > > > > Patch also available at: > > > > https://marc.info/?l=openbsd-tech&m=167185582521873&q=mbox > > > > I've had some problems with 20+ wgpeers few days ago and at that time it > would have been good if I had wgdesc in ifconfig wg output ... > > > > > > On Sat, Dec 24, 2022 at 03:29:35AM +0000, Mikolaj Kucharski wrote: > >> On Sat, Nov 19, 2022 at 12:03:59PM +0000, Mikolaj Kucharski wrote: > >>> Kind reminder. > >>> > >>> Below diff also at: > >>> > >>> https://marc.info/?l=openbsd-tech&m=166806412910623&w=2 > >>> > >>> This is diff by Noah Meier with small changes by me. > >>> > >>> > >>> On Thu, Nov 10, 2022 at 07:14:11AM +0000, Mikolaj Kucharski wrote: > >>>> On Thu, Nov 10, 2022 at 12:53:07AM +0000, Mikolaj Kucharski wrote: > >>>>> On Wed, Oct 20, 2021 at 10:20:09PM -0400, Noah Meier wrote: > >>>>>> Hi, > >>>>>> > >>>>>> While wireguard interfaces can have a description set by ifconfig, > >>>>>> wireguard peers currently cannot. I now have a lot of peers and > >>>>>> descriptions of them in ifconfig would be helpful. > >>>>>> > >>>>>> This diff adds a 'wgdesc' option to a 'wgpeer' in ifconfig (and a > >>>>>> corresponding '-wgdesc' option). Man page also updated. > >>>>>> > >>>>>> NM > >>>>> > >>>>> Now that my `ifconfig, wireguard output less verbose, unless -A or <if>` > >>>>> diff is commited ( see https://marc.info/?t=165779150000002&r=1&w=2 ), > >>>>> bump of an old thread. > >>>>> > >>>>> Below is rebased on -current and tiny modified by me, Noah's diff. > >>>>> > >>>>> You need both kernel and ifconfig with below code, otherwise you may see > >>>>> issues bringing up wg(4) interface. If you may loose access to machine > >>>>> behind wg(4) VPN, make sure you update on that machine both kernel and > >>>>> ifconfig(8) at the same time. > >>>>> > >> > >> Rebased again, just a moment ago. Will test runtime again over the weekend, > >> are there no surprises. > >> > >> - ifconfig compiles > >> - GENERIC.MP/amd64 kernel compiles too > >> > >> > >> Index: sbin/ifconfig/ifconfig.c > >> =================================================================== > >> RCS file: /cvs/src/sbin/ifconfig/ifconfig.c,v > >> retrieving revision 1.460 > >> diff -u -p -u -r1.460 ifconfig.c > >> --- sbin/ifconfig/ifconfig.c 18 Dec 2022 18:56:38 -0000 1.460 > >> +++ sbin/ifconfig/ifconfig.c 24 Dec 2022 00:49:05 -0000 > >> @@ -355,12 +355,14 @@ void setwgpeerep(const char *, const cha > >> void setwgpeeraip(const char *, int); > >> void setwgpeerpsk(const char *, int); > >> void setwgpeerpka(const char *, int); > >> +void setwgpeerdesc(const char *, int); > >> void setwgport(const char *, int); > >> void setwgkey(const char *, int); > >> void setwgrtable(const char *, int); > >> > >> void unsetwgpeer(const char *, int); > >> void unsetwgpeerpsk(const char *, int); > >> +void unsetwgpeerdesc(const char *, int); > >> void unsetwgpeerall(const char *, int); > >> > >> void wg_status(int); > >> @@ -623,11 +625,13 @@ const struct cmd { > >> { "wgaip", NEXTARG, A_WIREGUARD, setwgpeeraip}, > >> { "wgpsk", NEXTARG, A_WIREGUARD, setwgpeerpsk}, > >> { "wgpka", NEXTARG, A_WIREGUARD, setwgpeerpka}, > >> + { "wgdesc", NEXTARG, A_WIREGUARD, setwgpeerdesc}, > >> { "wgport", NEXTARG, A_WIREGUARD, setwgport}, > >> { "wgkey", NEXTARG, A_WIREGUARD, setwgkey}, > >> { "wgrtable", NEXTARG, A_WIREGUARD, setwgrtable}, > >> { "-wgpeer", NEXTARG, A_WIREGUARD, unsetwgpeer}, > >> { "-wgpsk", 0, A_WIREGUARD, unsetwgpeerpsk}, > >> + { "-wgdesc", 0, A_WIREGUARD, unsetwgpeerdesc}, > >> { "-wgpeerall", 0, A_WIREGUARD, unsetwgpeerall}, > >> > >> #else /* SMALL */ > >> @@ -5856,6 +5860,16 @@ setwgpeerpka(const char *pka, int param) > >> } > >> > >> void > >> +setwgpeerdesc(const char *wgdesc, int param) > >> +{ > >> + if (wg_peer == NULL) > >> + errx(1, "wgdesc: wgpeer not set"); > >> + if (strlen(wgdesc)) > >> + strlcpy(wg_peer->p_description, wgdesc, IFDESCRSIZE); > >> + wg_peer->p_flags |= WG_PEER_SET_DESCRIPTION; > >> +} > >> + > >> +void > >> setwgport(const char *port, int param) > >> { > >> const char *errmsg = NULL; > >> @@ -5902,6 +5916,15 @@ unsetwgpeerpsk(const char *value, int pa > >> } > >> > >> void > >> +unsetwgpeerdesc(const char *value, int param) > >> +{ > >> + if (wg_peer == NULL) > >> + errx(1, "wgdesc: wgpeer not set"); > >> + strlcpy(wg_peer->p_description, "", IFDESCRSIZE); > >> + wg_peer->p_flags |= WG_PEER_SET_DESCRIPTION; > >> +} > >> + > >> +void > >> unsetwgpeerall(const char *value, int param) > >> { > >> ensurewginterface(); > >> @@ -5961,6 +5984,9 @@ wg_status(int ifaliases) > >> b64_ntop(wg_peer->p_public, WG_KEY_LEN, > >> key, sizeof(key)); > >> printf("\twgpeer %s\n", key); > >> + > >> + if (strlen(wg_peer->p_description)) > >> + printf("\t\twgdesc %s\n", > >> wg_peer->p_description); > >> > >> if (wg_peer->p_flags & WG_PEER_HAS_PSK) > >> printf("\t\twgpsk (present)\n"); > >> Index: share/man/man4/wg.4 > >> =================================================================== > >> RCS file: /cvs/src/share/man/man4/wg.4,v > >> retrieving revision 1.10 > >> diff -u -p -u -r1.10 wg.4 > >> --- share/man/man4/wg.4 14 Mar 2021 10:08:38 -0000 1.10 > >> +++ share/man/man4/wg.4 24 Dec 2022 00:49:05 -0000 > >> @@ -42,6 +42,19 @@ configuration file for > >> .Xr netstart 8 . > >> The interface itself can be configured with > >> .Xr ifconfig 8 . > >> +To display > >> +.Cm wgpeer > >> +information for each > >> +.Nm wg > >> +interface option > >> +.Fl A > >> +to > >> +.Xr ifconfig 8 > >> +should be used or > >> +.Nm wg > >> +interface should be specified as an argument to > >> +.Xr ifconfig 8 > >> +command. > >> .Pp > >> .Nm wg > >> interfaces support the following > >> Index: sys/net/if_wg.c > >> =================================================================== > >> RCS file: /cvs/src/sys/net/if_wg.c,v > >> retrieving revision 1.26 > >> diff -u -p -u -r1.26 if_wg.c > >> --- sys/net/if_wg.c 21 Jul 2022 11:26:50 -0000 1.26 > >> +++ sys/net/if_wg.c 24 Dec 2022 00:49:06 -0000 > >> @@ -221,6 +221,9 @@ struct wg_peer { > >> > >> SLIST_ENTRY(wg_peer) p_start_list; > >> int p_start_onlist; > >> + > >> + struct mutex p_description_mtx; > >> + char p_description[IFDESCRSIZE]; > >> }; > >> > >> struct wg_softc { > >> @@ -275,6 +278,7 @@ int wg_peer_get_sockaddr(struct wg_peer > >> void wg_peer_clear_src(struct wg_peer *); > >> void wg_peer_get_endpoint(struct wg_peer *, struct wg_endpoint *); > >> void wg_peer_counters_add(struct wg_peer *, uint64_t, uint64_t); > >> +void wg_peer_set_description(struct wg_peer *, char *); > >> > >> int wg_aip_add(struct wg_softc *, struct wg_peer *, struct > >> wg_aip_io *); > >> struct wg_peer * > >> @@ -407,6 +411,9 @@ wg_peer_create(struct wg_softc *sc, uint > >> peer->p_counters_tx = 0; > >> peer->p_counters_rx = 0; > >> > >> + mtx_init(&peer->p_description_mtx, IPL_NET); > >> + memset(peer->p_description, 0, IFDESCRSIZE); > >> + > >> mtx_init(&peer->p_endpoint_mtx, IPL_NET); > >> bzero(&peer->p_endpoint, sizeof(peer->p_endpoint)); > >> > >> @@ -581,6 +588,15 @@ wg_peer_counters_add(struct wg_peer *pee > >> mtx_leave(&peer->p_counters_mtx); > >> } > >> > >> +void > >> +wg_peer_set_description(struct wg_peer *peer, char *description) > >> +{ > >> + mtx_enter(&peer->p_description_mtx); > >> + memset(peer->p_description, 0, IFDESCRSIZE); > >> + strlcpy(peer->p_description, description, IFDESCRSIZE); > >> + mtx_leave(&peer->p_description_mtx); > >> +} > >> + > >> int > >> wg_aip_add(struct wg_softc *sc, struct wg_peer *peer, struct wg_aip_io *d) > >> { > >> @@ -2320,6 +2336,10 @@ wg_ioctl_set(struct wg_softc *sc, struct > >> } > >> } > >> > >> + if (peer_o.p_flags & WG_PEER_SET_DESCRIPTION) { > >> + wg_peer_set_description(peer, peer_o.p_description); > >> + } > >> + > >> aip_p = &peer_p->p_aips[0]; > >> for (j = 0; j < peer_o.p_aips_count; j++) { > >> if ((ret = copyin(aip_p, &aip_o, sizeof(aip_o))) != 0) > >> @@ -2429,6 +2449,8 @@ wg_ioctl_get(struct wg_softc *sc, struct > >> aip_count++; > >> } > >> peer_o.p_aips_count = aip_count; > >> + > >> + strlcpy(peer_o.p_description, peer->p_description, IFDESCRSIZE); > >> > >> if ((ret = copyout(&peer_o, peer_p, sizeof(peer_o))) != 0) > >> goto unlock_and_ret_size; > >> Index: sys/net/if_wg.h > >> =================================================================== > >> RCS file: /cvs/src/sys/net/if_wg.h,v > >> retrieving revision 1.4 > >> diff -u -p -u -r1.4 if_wg.h > >> --- sys/net/if_wg.h 22 Jun 2020 12:20:44 -0000 1.4 > >> +++ sys/net/if_wg.h 24 Dec 2022 00:49:06 -0000 > >> @@ -61,6 +61,7 @@ struct wg_aip_io { > >> #define WG_PEER_REPLACE_AIPS (1 << 4) > >> #define WG_PEER_REMOVE (1 << 5) > >> #define WG_PEER_UPDATE (1 << 6) > >> +#define WG_PEER_SET_DESCRIPTION (1 << 7) > >> > >> #define p_sa p_endpoint.sa_sa > >> #define p_sin p_endpoint.sa_sin > >> @@ -80,6 +81,7 @@ struct wg_peer_io { > >> uint64_t p_txbytes; > >> uint64_t p_rxbytes; > >> struct timespec p_last_handshake; /* nanotime */ > >> + char p_description[IFDESCRSIZE]; > >> size_t p_aips_count; > >> struct wg_aip_io p_aips[]; > >> }; > >> > > > -- Regards, Mikolaj