summaryrefslogtreecommitdiffstats
path: root/package/busybox/busybox-1.9.0-zcip.patch
blob: 13d20b60329364c292f85cf86d89468f79739a84 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
--- busybox-1.9.0/networking/zcip.c	Fri Dec 21 23:00:25 2007
+++ busybox-1.9.0-zcip/networking/zcip.c	Mon Feb  4 10:37:14 2008
@@ -180,7 +180,7 @@
 	char *r_opt;
 	unsigned opts;
 
-	/* Ugly trick, but I want these zeroed in one go */
+	// ugly trick, but I want these zeroed in one go
 	struct {
 		const struct in_addr null_ip;
 		const struct ether_addr null_addr;
@@ -214,8 +214,17 @@
 	// exactly 2 args; -v accumulates and implies -f
 	opt_complementary = "=2:vv:vf";
 	opts = getopt32(argv, "fqr:v", &r_opt, &verbose);
+#if !BB_MMU
+	// on NOMMU reexec early (or else we will rerun things twice)
+	if (!FOREGROUND)
+		bb_daemonize_or_rexec(DAEMON_CHDIR_ROOT, argv);
+#endif
+	// open an ARP socket
+	// (need to do it before openlog to prevent openlog from taking
+	// fd 3 (sock_fd==3))
+	xmove_fd(xsocket(AF_PACKET, SOCK_PACKET, htons(ETH_P_ARP)), sock_fd);
 	if (!FOREGROUND) {
-		/* Do it early, before all bb_xx_msg calls */
+		// do it before all bb_xx_msg calls
 		openlog(applet_name, 0, LOG_DAEMON);
 		logmode |= LOGMODE_SYSLOG;
 	}
@@ -226,11 +235,6 @@
 			bb_error_msg_and_die("invalid link address");
 		}
 	}
-	// On NOMMU reexec early (or else we will rerun things twice)
-#if !BB_MMU
-	if (!FOREGROUND)
-		bb_daemonize_or_rexec(DAEMON_CHDIR_ROOT, argv);
-#endif
 	argc -= optind;
 	argv += optind;
 
@@ -249,8 +253,6 @@
 	//TODO: are we leaving sa_family == 0 (AF_UNSPEC)?!
 	safe_strncpy(saddr.sa_data, intf, sizeof(saddr.sa_data));
 
-	// open an ARP socket
-	xmove_fd(xsocket(AF_PACKET, SOCK_PACKET, htons(ETH_P_ARP)), sock_fd);
 	// bind to the interface's ARP socket
 	xbind(sock_fd, &saddr, sizeof(saddr));
 
@@ -290,7 +292,7 @@
 	// restarting after address conflicts:
 	//  - start with some address we want to try
 	//  - short random delay
-	//  - arp probes to see if another host else uses it
+	//  - arp probes to see if another host uses it
 	//  - arp announcements that we're claiming it
 	//  - use it
 	//  - defend it, within limits
@@ -321,1 +323,1 @@
 		switch (safe_poll(fds, 1, timeout_ms)) {

 		default:
-			/*bb_perror_msg("poll"); - done in safe_poll */
+			//bb_perror_msg("poll"); - done in safe_poll
 			return EXIT_FAILURE;

 		// timeout