Module Name:    src
Committed By:   nia
Date:           Tue Jan 11 09:44:49 UTC 2022

Modified Files:
        src/usr.sbin/sysinst: net.c

Log Message:
sysinst(8): Add a "data" argument to do_ifreq that is set after the
ifr struct is zeroed.

This allows us to simplify the code by not having 2x socket creation
code for checking whether interfaces are wireless.


To generate a diff of this commit:
cvs rdiff -u -r1.38 -r1.39 src/usr.sbin/sysinst/net.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/usr.sbin/sysinst/net.c
diff -u src/usr.sbin/sysinst/net.c:1.38 src/usr.sbin/sysinst/net.c:1.39
--- src/usr.sbin/sysinst/net.c:1.38	Mon Jan 10 22:14:01 2022
+++ src/usr.sbin/sysinst/net.c	Tue Jan 11 09:44:49 2022
@@ -1,4 +1,4 @@
-/*	$NetBSD: net.c,v 1.38 2022/01/10 22:14:01 nia Exp $	*/
+/*	$NetBSD: net.c,v 1.39 2022/01/11 09:44:49 nia Exp $	*/
 
 /*
  * Copyright 1997 Piermont Information Systems Inc.
@@ -275,7 +275,7 @@ get_ifconfig_info(struct net_desc *devs)
 }
 
 static int
-do_ifreq(struct ifreq *ifr, unsigned long cmd)
+do_ifreq(struct ifreq *ifr, unsigned long cmd, void *data)
 {
 	int sock;
 	int rval;
@@ -285,6 +285,7 @@ do_ifreq(struct ifreq *ifr, unsigned lon
 		return -1;
 
 	memset(ifr, 0, sizeof *ifr);
+	ifr->ifr_data = data;
 	strlcpy(ifr->ifr_name, net_dev, sizeof ifr->ifr_name);
 	rval = ioctl(sock, cmd, ifr);
 	close(sock);
@@ -321,10 +322,12 @@ get_ifinterface_info(void)
 	const char *media_opt;
 	const char *sep;
 
-	if (do_ifreq(&ifr, SIOCGIFADDR) == 0 && sa_in->sin_addr.s_addr != 0)
+	if (do_ifreq(&ifr, SIOCGIFADDR, NULL) == 0 &&
+	    sa_in->sin_addr.s_addr != 0)
 		strlcpy(net_ip, inet_ntoa(sa_in->sin_addr), sizeof net_ip);
 
-	if (do_ifreq(&ifr, SIOCGIFNETMASK) == 0 && sa_in->sin_addr.s_addr != 0)
+	if (do_ifreq(&ifr, SIOCGIFNETMASK, NULL) == 0 &&
+	    sa_in->sin_addr.s_addr != 0)
 		strlcpy(net_mask, inet_ntoa(sa_in->sin_addr), sizeof net_mask);
 
 	if (do_ifmreq(&ifmr, SIOCGIFMEDIA) == 0) {
@@ -1138,23 +1141,12 @@ config_wlan(char *inter)
 {
 	FILE *wpa_conf = NULL;
 	char wpa_cmd[256];
-	int sock;
 	struct ifreq ifr = {0};
 	struct ieee80211_nwid nwid = {0};
 
-	strlcpy(ifr.ifr_name, inter, sizeof(ifr.ifr_name));
-	ifr.ifr_data = &nwid;
-
-	sock = socket(PF_INET, SOCK_DGRAM, 0);
-	if (sock == -1)
-		return 0;
-
 	/* skip non-WLAN devices */
-	if (ioctl(sock, SIOCG80211NWID, &ifr) == -1) {
-		close(sock);
+	if (do_ifreq(&ifr, SIOCG80211NWID, &nwid) == -1)
 		return 0;
-	}
-	close(sock);
 
 	if (!file_mode_match(WPA_SUPPLICANT, S_IFREG))
 		return 0;

Reply via email to