aboutsummaryrefslogtreecommitdiff
path: root/networking/ifplugd.c
diff options
context:
space:
mode:
Diffstat (limited to 'networking/ifplugd.c')
-rw-r--r--networking/ifplugd.c26
1 files changed, 9 insertions, 17 deletions
diff --git a/networking/ifplugd.c b/networking/ifplugd.c
index 1426709cb..fa18edd57 100644
--- a/networking/ifplugd.c
+++ b/networking/ifplugd.c
@@ -365,7 +365,7 @@ static void up_iface(void)
365 if (!(ifrequest.ifr_flags & IFF_UP)) { 365 if (!(ifrequest.ifr_flags & IFF_UP)) {
366 ifrequest.ifr_flags |= IFF_UP; 366 ifrequest.ifr_flags |= IFF_UP;
367 /* Let user know we mess up with interface */ 367 /* Let user know we mess up with interface */
368 bb_info_msg("upping interface"); 368 bb_simple_info_msg("upping interface");
369 if (network_ioctl(SIOCSIFFLAGS, &ifrequest, "setting interface flags") < 0) { 369 if (network_ioctl(SIOCSIFFLAGS, &ifrequest, "setting interface flags") < 0) {
370 if (errno != ENODEV && errno != EADDRNOTAVAIL) 370 if (errno != ENODEV && errno != EADDRNOTAVAIL)
371 xfunc_die(); 371 xfunc_die();
@@ -461,7 +461,7 @@ static smallint detect_link(void)
461 else if (option_mask32 & FLAG_IGNORE_FAIL_POSITIVE) 461 else if (option_mask32 & FLAG_IGNORE_FAIL_POSITIVE)
462 status = IFSTATUS_UP; 462 status = IFSTATUS_UP;
463 else if (G.api_mode[0] == 'a') 463 else if (G.api_mode[0] == 'a')
464 bb_error_msg("can't detect link status"); 464 bb_simple_error_msg("can't detect link status");
465 } 465 }
466 466
467 if (status != G.iface_last_status) { 467 if (status != G.iface_last_status) {
@@ -493,14 +493,14 @@ static NOINLINE int check_existence_through_netlink(void)
493 goto ret; 493 goto ret;
494 if (errno == EINTR) 494 if (errno == EINTR)
495 continue; 495 continue;
496 bb_perror_msg("netlink: recv"); 496 bb_simple_perror_msg("netlink: recv");
497 return -1; 497 return -1;
498 } 498 }
499 499
500 mhdr = (struct nlmsghdr*)replybuf; 500 mhdr = (struct nlmsghdr*)replybuf;
501 while (bytes > 0) { 501 while (bytes > 0) {
502 if (!NLMSG_OK(mhdr, bytes)) { 502 if (!NLMSG_OK(mhdr, bytes)) {
503 bb_error_msg("netlink packet too small or truncated"); 503 bb_simple_error_msg("netlink packet too small or truncated");
504 return -1; 504 return -1;
505 } 505 }
506 506
@@ -509,7 +509,7 @@ static NOINLINE int check_existence_through_netlink(void)
509 int attr_len; 509 int attr_len;
510 510
511 if (mhdr->nlmsg_len < NLMSG_LENGTH(sizeof(struct ifinfomsg))) { 511 if (mhdr->nlmsg_len < NLMSG_LENGTH(sizeof(struct ifinfomsg))) {
512 bb_error_msg("netlink packet too small or truncated"); 512 bb_simple_error_msg("netlink packet too small or truncated");
513 return -1; 513 return -1;
514 } 514 }
515 515
@@ -591,7 +591,7 @@ int ifplugd_main(int argc UNUSED_PARAM, char **argv)
591 } 591 }
592 592
593 if (pid_from_pidfile > 0 && kill(pid_from_pidfile, 0) == 0) 593 if (pid_from_pidfile > 0 && kill(pid_from_pidfile, 0) == 0)
594 bb_error_msg_and_die("daemon already running"); 594 bb_simple_error_msg_and_die("daemon already running");
595#endif 595#endif
596 596
597 api_mode_found = strchr(api_modes, G.api_mode[0]); 597 api_mode_found = strchr(api_modes, G.api_mode[0]);
@@ -604,15 +604,7 @@ int ifplugd_main(int argc UNUSED_PARAM, char **argv)
604 604
605 xmove_fd(xsocket(AF_INET, SOCK_DGRAM, 0), ioctl_fd); 605 xmove_fd(xsocket(AF_INET, SOCK_DGRAM, 0), ioctl_fd);
606 if (opts & FLAG_MONITOR) { 606 if (opts & FLAG_MONITOR) {
607 struct sockaddr_nl addr; 607 int fd = create_and_bind_to_netlink(NETLINK_ROUTE, RTMGRP_LINK, 0);
608 int fd = xsocket(PF_NETLINK, SOCK_DGRAM, NETLINK_ROUTE);
609
610 memset(&addr, 0, sizeof(addr));
611 addr.nl_family = AF_NETLINK;
612 addr.nl_groups = RTMGRP_LINK;
613 addr.nl_pid = getpid();
614
615 xbind(fd, (struct sockaddr*)&addr, sizeof(addr));
616 xmove_fd(fd, netlink_fd); 608 xmove_fd(fd, netlink_fd);
617 } 609 }
618 610
@@ -698,7 +690,7 @@ int ifplugd_main(int argc UNUSED_PARAM, char **argv)
698 ) { 690 ) {
699 if (errno == EINTR) 691 if (errno == EINTR)
700 continue; 692 continue;
701 bb_perror_msg("poll"); 693 bb_simple_perror_msg("poll");
702 goto exiting; 694 goto exiting;
703 } 695 }
704 696
@@ -771,5 +763,5 @@ int ifplugd_main(int argc UNUSED_PARAM, char **argv)
771 763
772 exiting: 764 exiting:
773 remove_pidfile(pidfile_name); 765 remove_pidfile(pidfile_name);
774 bb_error_msg_and_die("exiting"); 766 bb_simple_error_msg_and_die("exiting");
775} 767}