git: 92caff2b1b6b - main - wlanwatch: clean up to compile / run

From: Adrian Chadd <adrian_at_FreeBSD.org>
Date: Fri, 28 Feb 2025 02:50:09 UTC
The branch main has been updated by adrian:

URL: https://cgit.FreeBSD.org/src/commit/?id=92caff2b1b6b3aa5da49a2cb90f3c787fc11d17e

commit 92caff2b1b6b3aa5da49a2cb90f3c787fc11d17e
Author:     Adrian Chadd <adrian@FreeBSD.org>
AuthorDate: 2025-02-27 02:37:42 +0000
Commit:     Adrian Chadd <adrian@FreeBSD.org>
CommitDate: 2025-02-28 02:49:49 +0000

    wlanwatch: clean up to compile / run
    
    * add static where needed
    * delete old unused flags, dating back to the initial commit from Sam
    * indirect through void * where appropriate, to avoid LLVM alignment
      errors
    * PRIu64 where needed
    
    This does work, but it currently doesn't track the ifname itself,
    so we see ifindexes, not ifnames:
    
    Wed Feb 26 18:35:59 RTM_IEEE80211: if# 2, scan complete
    Wed Feb 26 18:35:59 RTM_IEEE80211: if# 2, associate with 30:de:4b:db:46:0a
    Wed Feb 26 18:35:59 RTM_IFINFO: if# 2, link: up, flags:<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST>
    
    .. but it does work!
    
    Differential Revision:  https://reviews.freebsd.org/D49149
---
 tools/tools/net80211/wlanwatch/wlanwatch.c | 31 ++++++++++++++----------------
 1 file changed, 14 insertions(+), 17 deletions(-)

diff --git a/tools/tools/net80211/wlanwatch/wlanwatch.c b/tools/tools/net80211/wlanwatch/wlanwatch.c
index 6e3bfd798c2d..ec6d85cc1ffb 100644
--- a/tools/tools/net80211/wlanwatch/wlanwatch.c
+++ b/tools/tools/net80211/wlanwatch/wlanwatch.c
@@ -63,6 +63,7 @@
 #include <sysexits.h>
 #include <unistd.h>
 #include <ifaddrs.h>
+#include <inttypes.h>
 
 /* XXX */
 enum ieee80211_notify_cac_event {
@@ -74,7 +75,7 @@ enum ieee80211_notify_cac_event {
 
 static	void print_rtmsg(struct rt_msghdr *rtm, int msglen);
 
-int	nflag = 0;
+static int	nflag = 0;
 
 int
 main(int argc, char *argv[])
@@ -121,22 +122,17 @@ bprintf(FILE *fp, int b, char *s)
 		putc('>', fp);
 }
 
-char metricnames[] =
-"\011pksent\010rttvar\7rtt\6ssthresh\5sendpipe\4recvpipe\3expire\2hopcount"
-"\1mtu";
-char routeflags[] =
-"\1UP\2GATEWAY\3HOST\4REJECT\5DYNAMIC\6MODIFIED\7DONE\010MASK_PRESENT"
-"\011CLONING\012XRESOLVE\013LLINFO\014STATIC\015BLACKHOLE\016b016"
-"\017PROTO2\020PROTO1\021PRCLONING\022WASCLONED\023PROTO3\024CHAINDELETE"
-"\025PINNED\026LOCAL\027BROADCAST\030MULTICAST";
-char ifnetflags[] =
+static char ifnetflags[] =
 "\1UP\2BROADCAST\3DEBUG\4LOOPBACK\5PTP\6b6\7RUNNING\010NOARP"
 "\011PPROMISC\012ALLMULTI\013OACTIVE\014SIMPLEX\015LINK0\016LINK1"
 "\017LINK2\020MULTICAST";
-char addrnames[] =
+static char addrnames[] =
 "\1DST\2GATEWAY\3NETMASK\4GENMASK\5IFP\6IFA\7AUTHOR\010BRD";
 
-char defaultname[] = "default";
+static char defaultname[] = "default";
+
+#define	SOCKADDR_CNV_CONST(sa, sa_fam) \
+	((struct sa_fam *)(void *) (sa))
 
 static const char *
 routename(struct sockaddr *sa)
@@ -165,7 +161,7 @@ routename(struct sockaddr *sa)
 	    {	struct in_addr in;
 		char *cp;
 
-		in = ((struct sockaddr_in *)sa)->sin_addr;
+		in = SOCKADDR_CNV_CONST(sa, sockaddr_in)->sin_addr;
 
 		cp = NULL;
 		if (in.s_addr == INADDR_ANY || sa->sa_len < 4)
@@ -220,10 +216,10 @@ routename(struct sockaddr *sa)
 #endif
 
 	case AF_LINK:
-		return (link_ntoa((struct sockaddr_dl *)sa));
+		return (link_ntoa(SOCKADDR_CNV_CONST(sa, sockaddr_dl)));
 
 	default:
-	    {	u_short *s = (u_short *)sa;
+	    {	u_short *s = (u_short *)(void *)sa;
 		u_short *slim = s + ((sa->sa_len + 1) >> 1);
 		char *cp = line + sprintf(line, "(%d)", sa->sa_family);
 		char *cpe = line + sizeof(line);
@@ -340,7 +336,7 @@ print_rtmsg(struct rt_msghdr *rtm, int msglen)
 		fflush(stdout);
 		break;
 	case RTM_IEEE80211:
-#define	V(type)	((struct type *)(&ifan[1]))
+#define	V(type)	((struct type *)(void *)(&ifan[1]))
 		ifan = (struct if_announcemsghdr *)rtm;
 		printf("%.19s RTM_IEEE80211: if# %d, ", cnow, ifan->ifan_index);
 		switch (ifan->ifan_what) {
@@ -373,7 +369,8 @@ print_rtmsg(struct rt_msghdr *rtm, int msglen)
 			printf("replay failure: src %s "
 			    , ether_sprintf(V(ieee80211_replay_event)->iev_src)
 			);
-			printf("dst %s cipher %u keyix %u keyrsc %llu rsc %llu"
+			printf("dst %s cipher %u keyix %u keyrsc %" PRIu64
+			    " rsc %" PRIu64
 			    , ether_sprintf(V(ieee80211_replay_event)->iev_dst)
 			    , V(ieee80211_replay_event)->iev_cipher
 			    , V(ieee80211_replay_event)->iev_keyix