Fri Oct 7 15:49:59 2016 UTC ()
CID 1373516: Missing breaks
Also delete perror, fix fprintf to be syslog.


(christos)
diff -r1.40 -r1.41 src/usr.sbin/ifwatchd/ifwatchd.c

cvs diff -r1.40 -r1.41 src/usr.sbin/ifwatchd/ifwatchd.c (expand / switch to unified diff)

--- src/usr.sbin/ifwatchd/ifwatchd.c 2016/10/06 11:13:57 1.40
+++ src/usr.sbin/ifwatchd/ifwatchd.c 2016/10/07 15:49:58 1.41
@@ -1,16 +1,16 @@ @@ -1,16 +1,16 @@
1/* $NetBSD: ifwatchd.c,v 1.40 2016/10/06 11:13:57 roy Exp $ */ 1/* $NetBSD: ifwatchd.c,v 1.41 2016/10/07 15:49:58 christos Exp $ */
2#include <sys/cdefs.h> 2#include <sys/cdefs.h>
3__RCSID("$NetBSD: ifwatchd.c,v 1.40 2016/10/06 11:13:57 roy Exp $"); 3__RCSID("$NetBSD: ifwatchd.c,v 1.41 2016/10/07 15:49:58 christos Exp $");
4 4
5/*- 5/*-
6 * Copyright (c) 2002, 2003 The NetBSD Foundation, Inc. 6 * Copyright (c) 2002, 2003 The NetBSD Foundation, Inc.
7 * All rights reserved. 7 * All rights reserved.
8 * 8 *
9 * This code is derived from software contributed to The NetBSD Foundation 9 * This code is derived from software contributed to The NetBSD Foundation
10 * by Martin Husemann <martin@NetBSD.org>. 10 * by Martin Husemann <martin@NetBSD.org>.
11 * 11 *
12 * Redistribution and use in source and binary forms, with or without 12 * Redistribution and use in source and binary forms, with or without
13 * modification, are permitted provided that the following conditions 13 * modification, are permitted provided that the following conditions
14 * are met: 14 * are met:
15 * 1. Redistributions of source code must retain the above copyright 15 * 1. Redistributions of source code must retain the above copyright
16 * notice, this list of conditions and the following disclaimer. 16 * notice, this list of conditions and the following disclaimer.
@@ -179,27 +179,26 @@ main(int argc, char **argv) @@ -179,27 +179,26 @@ main(int argc, char **argv)
179 179
180 while (argc > 0) { 180 while (argc > 0) {
181 list_interfaces(argv[0]); 181 list_interfaces(argv[0]);
182 argv++; 182 argv++;
183 argc--; 183 argc--;
184 } 184 }
185 185
186 if (!verbose) 186 if (!verbose)
187 daemon(0, 0); 187 daemon(0, 0);
188 188
189 s = socket(PF_ROUTE, SOCK_RAW, 0); 189 s = socket(PF_ROUTE, SOCK_RAW, 0);
190 if (s < 0) { 190 if (s < 0) {
191 syslog(LOG_ERR, "error opening routing socket: %m"); 191 syslog(LOG_ERR, "error opening routing socket: %m");
192 perror("open routing socket"); 
193 exit(EXIT_FAILURE); 192 exit(EXIT_FAILURE);
194 } 193 }
195 194
196 if (!inhibit_initial) 195 if (!inhibit_initial)
197 run_initial_ups(); 196 run_initial_ups();
198 197
199 iov[0].iov_base = buf; 198 iov[0].iov_base = buf;
200 iov[0].iov_len = sizeof(buf); 199 iov[0].iov_len = sizeof(buf);
201 memset(&msg, 0, sizeof(msg)); 200 memset(&msg, 0, sizeof(msg));
202 msg.msg_iov = iov; 201 msg.msg_iov = iov;
203 msg.msg_iovlen = 1; 202 msg.msg_iovlen = 1;
204 203
205 for (;;) { 204 for (;;) {
@@ -348,49 +347,48 @@ invoke_script(const char *ifname, enum e @@ -348,49 +347,48 @@ invoke_script(const char *ifname, enum e
348 char addr[NI_MAXHOST], daddr[NI_MAXHOST]; 347 char addr[NI_MAXHOST], daddr[NI_MAXHOST];
349 const char *script; 348 const char *script;
350 int status; 349 int status;
351 350
352 if (ifname == NULL) 351 if (ifname == NULL)
353 return; 352 return;
354 353
355 script = *scripts[ev]; 354 script = *scripts[ev];
356 if (script == NULL) 355 if (script == NULL)
357 return; 356 return;
358 357
359 addr[0] = daddr[0] = 0; 358 addr[0] = daddr[0] = 0;
360 if (sa != NULL) { 359 if (sa != NULL) {
 360 const struct sockaddr_in *sin;
 361 const struct sockaddr_in6 *sin6;
 362
361 if (sa->sa_len == 0) { 363 if (sa->sa_len == 0) {
362 fprintf(stderr, 364 syslog(LOG_ERR,
363 "illegal socket address (sa_len == 0)\n"); 365 "illegal socket address (sa_len == 0)");
364 return; 366 return;
365 } 367 }
366 switch (sa->sa_family) { 368 switch (sa->sa_family) {
367 case AF_INET: 369 case AF_INET:
368 { 
369 const struct sockaddr_in *sin; 
370 
371 sin = (const struct sockaddr_in *)sa; 370 sin = (const struct sockaddr_in *)sa;
372 if (sin->sin_addr.s_addr == INADDR_ANY || 371 if (sin->sin_addr.s_addr == INADDR_ANY ||
373 sin->sin_addr.s_addr == INADDR_BROADCAST) 372 sin->sin_addr.s_addr == INADDR_BROADCAST)
374 return; 373 return;
375 } 374 break;
376 case AF_INET6: 375 case AF_INET6:
377 { 
378 const struct sockaddr_in6 *sin6; 
379 
380 sin6 = (const struct sockaddr_in6 *)sa; 376 sin6 = (const struct sockaddr_in6 *)sa;
381 if (IN6_IS_ADDR_LINKLOCAL(&sin6->sin6_addr)) 377 if (IN6_IS_ADDR_LINKLOCAL(&sin6->sin6_addr))
382 return; 378 return;
383 } 379 break;
 380 default:
 381 break;
384 } 382 }
385 383
386 if (getnameinfo(sa, sa->sa_len, addr, sizeof addr, NULL, 0, 384 if (getnameinfo(sa, sa->sa_len, addr, sizeof addr, NULL, 0,
387 NI_NUMERICHOST)) { 385 NI_NUMERICHOST)) {
388 if (verbose) 386 if (verbose)
389 printf("getnameinfo failed\n"); 387 printf("getnameinfo failed\n");
390 return; /* this address can not be handled */ 388 return; /* this address can not be handled */
391 } 389 }
392 } 390 }
393 391
394 if (dest != NULL) { 392 if (dest != NULL) {
395 if (getnameinfo(dest, dest->sa_len, daddr, sizeof daddr, 393 if (getnameinfo(dest, dest->sa_len, daddr, sizeof daddr,
396 NULL, 0, NI_NUMERICHOST)) { 394 NULL, 0, NI_NUMERICHOST)) {
@@ -399,34 +397,33 @@ invoke_script(const char *ifname, enum e @@ -399,34 +397,33 @@ invoke_script(const char *ifname, enum e
399 return; /* this address can not be handled */ 397 return; /* this address can not be handled */
400 } 398 }
401 } 399 }
402 400
403 if (verbose) 401 if (verbose)
404 (void) printf("calling: %s %s %s %s %s %s\n", 402 (void) printf("calling: %s %s %s %s %s %s\n",
405 script, ifname, DummyTTY, DummySpeed, addr, daddr); 403 script, ifname, DummyTTY, DummySpeed, addr, daddr);
406 if (!quiet) 404 if (!quiet)
407 syslog(LOG_INFO, "calling: %s %s %s %s %s %s\n", 405 syslog(LOG_INFO, "calling: %s %s %s %s %s %s\n",
408 script, ifname, DummyTTY, DummySpeed, addr, daddr); 406 script, ifname, DummyTTY, DummySpeed, addr, daddr);
409 407
410 switch (vfork()) { 408 switch (vfork()) {
411 case -1: 409 case -1:
412 fprintf(stderr, "cannot fork\n"); 410 syslog(LOG_ERR, "cannot fork: %m");
413 break; 411 break;
414 case 0: 412 case 0:
415 if (execl(script, script, ifname, DummyTTY, DummySpeed, 413 if (execl(script, script, ifname, DummyTTY, DummySpeed,
416 addr, daddr, NULL) == -1) { 414 addr, daddr, NULL) == -1) {
417 syslog(LOG_ERR, "could not execute \"%s\": %m", 415 syslog(LOG_ERR, "could not execute \"%s\": %m",
418 script); 416 script);
419 perror(script); 
420 } 417 }
421 _exit(EXIT_FAILURE); 418 _exit(EXIT_FAILURE);
422 default: 419 default:
423 (void) wait(&status); 420 (void) wait(&status);
424 } 421 }
425} 422}
426 423
427static void 424static void
428list_interfaces(const char *ifnames) 425list_interfaces(const char *ifnames)
429{ 426{
430 char * names = strdup(ifnames); 427 char * names = strdup(ifnames);
431 char * name, *lasts; 428 char * name, *lasts;
432 static const char sep[] = " \t"; 429 static const char sep[] = " \t";