Lines Matching refs:iface
171 struct interface *iface; in cleanup() local
177 iface = ifaces; in cleanup()
178 ifaces = iface->next; in cleanup()
179 free_interface(iface); in cleanup()
226 drop_config(struct interface *iface, const char *reason) in drop_config() argument
228 free(iface->state->old); in drop_config()
229 iface->state->old = iface->state->new; in drop_config()
230 iface->state->new = NULL; in drop_config()
231 iface->state->reason = reason; in drop_config()
232 configure(iface); in drop_config()
233 free(iface->state->old); in drop_config()
234 iface->state->old = NULL; in drop_config()
235 iface->state->lease.addr.s_addr = 0; in drop_config()
250 stop_interface(struct interface *iface) in stop_interface() argument
254 syslog(LOG_INFO, "%s: removing interface", iface->name); in stop_interface()
255 if (strcmp(iface->state->reason, "RELEASE") != 0) in stop_interface()
256 drop_config(iface, "STOP"); in stop_interface()
257 close_sockets(iface); in stop_interface()
258 delete_timeout(NULL, iface); in stop_interface()
260 if (ifp == iface) in stop_interface()
274 dhcp_xid(struct interface *iface) in dhcp_xid() argument
278 if (iface->state->options->options & DHCPCD_XID_HWADDR && in dhcp_xid()
279 iface->hwlen >= sizeof(xid)) in dhcp_xid()
281 memcpy(&xid, (iface->hwaddr + iface->hwlen) - sizeof(xid), in dhcp_xid()
290 send_message(struct interface *iface, int type, in send_message() argument
293 struct if_state *state = iface->state; in send_message()
304 iface->name, get_dhcp_op(type), state->xid); in send_message()
317 iface->name, get_dhcp_op(type), state->xid, in send_message()
322 open_sockets(iface); in send_message()
328 if (iface->udp_fd == -1 || in send_message()
329 (!(ifo->options & DHCPCD_INFORM) && is_bootp(iface->state->new))) in send_message()
331 a = iface->addr.s_addr; in send_message()
332 iface->addr.s_addr = 0; in send_message()
334 len = make_message(&dhcp, iface, type); in send_message()
336 iface->addr.s_addr = a; in send_message()
343 r = send_packet(iface, to, (uint8_t *)dhcp, len); in send_message()
345 syslog(LOG_ERR, "%s: send_packet: %m", iface->name); in send_message()
346 close_sockets(iface); in send_message()
350 r = send_raw_packet(iface, ETHERTYPE_IP, udp, len); in send_message()
358 syslog(LOG_ERR, "%s: send_raw_packet: %m", iface->name); in send_message()
360 drop_config(iface, "FAIL"); in send_message()
361 close_sockets(iface); in send_message()
362 delete_timeout(NULL, iface); in send_message()
371 add_timeout_tv(&tv, callback, iface); in send_message()
407 struct interface *iface = arg; in start_expire() local
409 iface->state->interval = 0; in start_expire()
410 if (iface->addr.s_addr == 0) { in start_expire()
412 iface->state->lease.addr.s_addr = 0; in start_expire()
413 start_discover(iface); in start_expire()
417 syslog(LOG_ERR, "%s: lease expired", iface->name); in start_expire()
418 delete_timeout(NULL, iface); in start_expire()
419 drop_config(iface, "EXPIRE"); in start_expire()
420 unlink(iface->leasefile); in start_expire()
421 if (iface->carrier != LINK_DOWN) in start_expire()
422 start_interface(iface); in start_expire()
427 const struct interface *iface, const struct dhcp_message *dhcp, in log_dhcp() argument
446 syslog(lvl, "%s: %s %s %s %s `%s'", iface->name, msg, a, in log_dhcp()
455 iface->name, msg, tfrom, inet_ntoa(addr)); in log_dhcp()
458 iface->name, msg, a, tfrom, inet_ntoa(addr)); in log_dhcp()
488 handle_dhcp(struct interface *iface, struct dhcp_message **dhcpp, const struct in_addr *from) in handle_dhcp() argument
490 struct if_state *state = iface->state; in handle_dhcp()
510 log_dhcp(LOG_WARNING, "reject NAK", iface, dhcp, from); in handle_dhcp()
514 log_dhcp(LOG_WARNING, "NAK:", iface, dhcp, from); in handle_dhcp()
516 drop_config(iface, "NAK"); in handle_dhcp()
517 unlink(iface->leasefile); in handle_dhcp()
519 close_sockets(iface); in handle_dhcp()
521 add_timeout_sec(state->nakoff, start_interface, iface); in handle_dhcp()
537 log_dhcp(LOG_WARNING, "reject DHCP", iface, dhcp, from); in handle_dhcp()
554 log_dhcp(LOG_INFO, "offered", iface, dhcp, from); in handle_dhcp()
564 run_script(iface); in handle_dhcp()
567 delete_timeout(send_discover, iface); in handle_dhcp()
576 start_request(iface); in handle_dhcp()
584 iface, dhcp, from); in handle_dhcp()
591 iface, dhcp, from); in handle_dhcp()
596 log_dhcp(LOG_INFO, "acknowledged", iface, dhcp, from); in handle_dhcp()
608 delete_timeout(NULL, iface); in handle_dhcp()
613 close_sockets(iface); in handle_dhcp()
616 iface->addr.s_addr != state->offer->yiaddr) in handle_dhcp()
621 if (has_address(iface->name, &addr, NULL) != 1) { in handle_dhcp()
626 send_arp_probe(iface); in handle_dhcp()
631 bind_interface(iface); in handle_dhcp()
637 struct interface *iface = arg; in handle_dhcp_packet() local
650 bytes = get_raw_packet(iface, ETHERTYPE_IP, in handle_dhcp_packet()
656 iface->name, inet_ntoa(from)); in handle_dhcp_packet()
659 i = whitelisted_ip(iface->state->options, from.s_addr); in handle_dhcp_packet()
663 iface->name, inet_ntoa(from)); in handle_dhcp_packet()
666 blacklisted_ip(iface->state->options, from.s_addr) == 1) in handle_dhcp_packet()
670 iface->name, inet_ntoa(from)); in handle_dhcp_packet()
673 if (iface->flags & IFF_POINTOPOINT && in handle_dhcp_packet()
674 iface->dst.s_addr != from.s_addr) in handle_dhcp_packet()
678 iface->name, inet_ntoa(from)); in handle_dhcp_packet()
684 iface->name, inet_ntoa(from)); in handle_dhcp_packet()
692 iface->name, inet_ntoa(from)); in handle_dhcp_packet()
696 if (iface->state->xid != dhcp->xid) { in handle_dhcp_packet()
699 iface->name, dhcp->xid, iface->state->xid, in handle_dhcp_packet()
704 if (iface->hwlen <= sizeof(dhcp->chaddr) && in handle_dhcp_packet()
705 memcmp(dhcp->chaddr, iface->hwaddr, iface->hwlen)) in handle_dhcp_packet()
708 iface->name, dhcp->xid, in handle_dhcp_packet()
712 handle_dhcp(iface, &dhcp, &from); in handle_dhcp_packet()
713 if (iface->raw_fd == -1) in handle_dhcp_packet()
721 send_release(struct interface *iface) in send_release() argument
725 if (iface->state->new != NULL && in send_release()
726 iface->state->new->cookie == htonl(MAGIC_COOKIE)) in send_release()
729 iface->name, inet_ntoa(iface->state->lease.addr)); in send_release()
730 iface->state->xid = dhcp_xid(iface); in send_release()
731 send_message(iface, DHCP_RELEASE, NULL); in send_release()
736 drop_config(iface, "RELEASE"); in send_release()
738 unlink(iface->leasefile); in send_release()
742 send_decline(struct interface *iface) in send_decline() argument
744 send_message(iface, DHCP_DECLINE, NULL); in send_decline()
748 configure_interface1(struct interface *iface) in configure_interface1() argument
750 struct if_state *ifs = iface->state; in configure_interface1()
756 if_conf(iface); in configure_interface1()
758 if (iface->flags & IFF_POINTOPOINT && !(ifo->options & DHCPCD_INFORM)) in configure_interface1()
760 if (iface->flags & IFF_NOARP || in configure_interface1()
763 if (ifo->options & DHCPCD_LINK && carrier_status(iface) == -1) in configure_interface1()
767 iface->metric = ifo->metric; in configure_interface1()
772 if (iface->hwlen > DHCP_CHADDR_LEN) in configure_interface1()
777 switch (iface->family) { in configure_interface1()
784 free(iface->clientid); in configure_interface1()
785 iface->clientid = NULL; in configure_interface1()
787 iface->clientid = xmalloc(ifo->clientid[0] + 1); in configure_interface1()
788 memcpy(iface->clientid, ifo->clientid, ifo->clientid[0] + 1); in configure_interface1()
792 if ((len = get_duid(duid, iface)) == 0) in configure_interface1()
796 iface->clientid = xmalloc(len + 6); in configure_interface1()
797 iface->clientid[0] = len + 5; in configure_interface1()
798 iface->clientid[1] = 255; /* RFC 4361 */ in configure_interface1()
799 ifl = strlen(iface->name); in configure_interface1()
801 memcpy(iface->clientid + 2, iface->name, ifl); in configure_interface1()
803 memset(iface->clientid + 2 + ifl, in configure_interface1()
806 ifl = htonl(if_nametoindex(iface->name)); in configure_interface1()
807 memcpy(iface->clientid + 2, &ifl, 4); in configure_interface1()
810 len = iface->hwlen + 1; in configure_interface1()
811 iface->clientid = xmalloc(len + 1); in configure_interface1()
812 iface->clientid[0] = len; in configure_interface1()
813 iface->clientid[1] = iface->family; in configure_interface1()
814 memcpy(iface->clientid + 2, iface->hwaddr, in configure_interface1()
815 iface->hwlen); in configure_interface1()
819 syslog(LOG_DEBUG, "%s: using ClientID %s", iface->name, in configure_interface1()
820 hwaddr_ntoa(iface->clientid + 1, *iface->clientid)); in configure_interface1()
822 syslog(LOG_DEBUG, "%s: using hwaddr %s", iface->name, in configure_interface1()
823 hwaddr_ntoa(iface->hwaddr, iface->hwlen)); in configure_interface1()
827 select_profile(struct interface *iface, const char *profile) in select_profile() argument
833 ifo = read_config(cffile, iface->name, iface->ssid, profile); in select_profile()
835 syslog(LOG_DEBUG, "%s: no profile %s", iface->name, profile); in select_profile()
840 strlcpy(iface->state->profile, profile, in select_profile()
841 sizeof(iface->state->profile)); in select_profile()
843 iface->name, profile); in select_profile()
845 *iface->state->profile = '\0'; in select_profile()
846 free_options(iface->state->options); in select_profile()
847 iface->state->options = ifo; in select_profile()
851 configure_interface1(iface); in select_profile()
858 struct interface *iface; in start_fallback() local
860 iface = (struct interface *)arg; in start_fallback()
861 select_profile(iface, iface->state->options->fallback); in start_fallback()
862 start_interface(iface); in start_fallback()
866 configure_interface(struct interface *iface, int argc, char **argv) in configure_interface() argument
868 select_profile(iface, NULL); in configure_interface()
869 add_options(iface->state->options, argc, argv); in configure_interface()
870 configure_interface1(iface); in configure_interface()
876 struct interface *iface; in handle_carrier() local
881 for (iface = ifaces; iface; iface = iface->next) in handle_carrier()
882 if (strcmp(iface->name, ifname) == 0) in handle_carrier()
884 if (!iface || !(iface->state->options->options & DHCPCD_LINK)) in handle_carrier()
886 carrier = carrier_status(iface); in handle_carrier()
889 else if (carrier == 0 || !(iface->flags & IFF_RUNNING)) { in handle_carrier()
890 if (iface->carrier != LINK_DOWN) { in handle_carrier()
891 iface->carrier = LINK_DOWN; in handle_carrier()
892 syslog(LOG_INFO, "%s: carrier lost", iface->name); in handle_carrier()
893 close_sockets(iface); in handle_carrier()
894 delete_timeouts(iface, start_expire, NULL); in handle_carrier()
895 drop_config(iface, "NOCARRIER"); in handle_carrier()
897 } else if (carrier == 1 && (iface->flags & IFF_RUNNING)) { in handle_carrier()
898 if (iface->carrier != LINK_UP) { in handle_carrier()
899 iface->carrier = LINK_UP; in handle_carrier()
900 syslog(LOG_INFO, "%s: carrier acquired", iface->name); in handle_carrier()
901 if (iface->wireless) in handle_carrier()
902 getifssid(iface->name, iface->ssid); in handle_carrier()
903 configure_interface(iface, margc, margv); in handle_carrier()
904 iface->state->interval = 0; in handle_carrier()
905 iface->state->reason = "CARRIER"; in handle_carrier()
906 run_script(iface); in handle_carrier()
907 start_interface(iface); in handle_carrier()
915 struct interface *iface = arg; in start_discover() local
916 struct if_options *ifo = iface->state->options; in start_discover()
918 iface->state->state = DHS_DISCOVER; in start_discover()
919 iface->state->xid = dhcp_xid(iface); in start_discover()
920 delete_timeout(NULL, iface); in start_discover()
922 add_timeout_sec(ifo->timeout, start_fallback, iface); in start_discover()
924 !IN_LINKLOCAL(htonl(iface->addr.s_addr))) in start_discover()
926 if (IN_LINKLOCAL(htonl(iface->state->fail.s_addr))) in start_discover()
927 add_timeout_sec(RATE_LIMIT_INTERVAL, start_ipv4ll, iface); in start_discover()
929 add_timeout_sec(ifo->timeout, start_ipv4ll, iface); in start_discover()
931 syslog(LOG_INFO, "%s: broadcasting for a lease", iface->name); in start_discover()
932 send_discover(iface); in start_discover()
938 struct interface *iface = arg; in start_request() local
940 iface->state->state = DHS_REQUEST; in start_request()
941 send_request(iface); in start_request()
947 struct interface *iface = arg; in start_renew() local
950 iface->name, inet_ntoa(iface->state->lease.addr)); in start_renew()
951 iface->state->state = DHS_RENEW; in start_renew()
952 iface->state->xid = dhcp_xid(iface); in start_renew()
953 send_renew(iface); in start_renew()
959 struct interface *iface = arg; in start_rebind() local
962 iface->name); in start_rebind()
963 iface->state->state = DHS_REBIND; in start_rebind()
964 delete_timeout(send_renew, iface); in start_rebind()
965 iface->state->lease.server.s_addr = 0; in start_rebind()
966 send_rebind(iface); in start_rebind()
972 struct interface *iface = arg; in start_timeout() local
974 bind_interface(iface); in start_timeout()
975 iface->state->interval = 0; in start_timeout()
976 start_discover(iface); in start_timeout()
999 handle_3rdparty(struct interface *iface) in handle_3rdparty() argument
1004 ifo = iface->state->options; in handle_3rdparty()
1008 if (get_address(iface->name, &addr, &net, &dst) == 1) in handle_3rdparty()
1009 handle_ifa(RTM_NEWADDR, iface->name, &addr, &net, &dst); in handle_3rdparty()
1013 iface->name); in handle_3rdparty()
1014 iface->state->reason = "3RDPARTY"; in handle_3rdparty()
1015 run_script(iface); in handle_3rdparty()
1021 start_static(struct interface *iface) in start_static() argument
1025 if (handle_3rdparty(iface)) in start_static()
1027 ifo = iface->state->options; in start_static()
1028 iface->state->offer = in start_static()
1030 delete_timeout(NULL, iface); in start_static()
1031 bind_interface(iface); in start_static()
1035 start_inform(struct interface *iface) in start_inform() argument
1037 if (handle_3rdparty(iface)) in start_inform()
1041 iface->addr.s_addr = iface->state->options->req_addr.s_addr; in start_inform()
1042 iface->net.s_addr = iface->state->options->req_mask.s_addr; in start_inform()
1044 iface->state->options->options |= DHCPCD_STATIC; in start_inform()
1045 start_static(iface); in start_inform()
1048 iface->state->state = DHS_INFORM; in start_inform()
1049 iface->state->xid = dhcp_xid(iface); in start_inform()
1050 send_inform(iface); in start_inform()
1054 start_reboot(struct interface *iface) in start_reboot() argument
1056 struct if_options *ifo = iface->state->options; in start_reboot()
1058 if (ifo->options & DHCPCD_LINK && iface->carrier == LINK_DOWN) { in start_reboot()
1059 syslog(LOG_INFO, "%s: waiting for carrier", iface->name); in start_reboot()
1063 start_static(iface); in start_reboot()
1066 if (ifo->reboot == 0 || iface->state->offer == NULL) { in start_reboot()
1067 start_discover(iface); in start_reboot()
1072 iface->name, inet_ntoa(iface->state->lease.addr)); in start_reboot()
1073 } else if (iface->state->offer->cookie == 0) { in start_reboot()
1075 iface->state->claims = 0; in start_reboot()
1076 send_arp_announce(iface); in start_reboot()
1078 start_discover(iface); in start_reboot()
1082 iface->name, inet_ntoa(iface->state->lease.addr)); in start_reboot()
1084 iface->state->state = DHS_REBOOT; in start_reboot()
1085 iface->state->xid = dhcp_xid(iface); in start_reboot()
1086 iface->state->lease.server.s_addr = 0; in start_reboot()
1087 delete_timeout(NULL, iface); in start_reboot()
1089 add_timeout_sec(ifo->reboot, start_fallback, iface); in start_reboot()
1091 iface->state->lease.frominfo) in start_reboot()
1092 add_timeout_sec(ifo->reboot, start_timeout, iface); in start_reboot()
1095 add_timeout_sec(ifo->reboot, start_expire, iface); in start_reboot()
1098 send_inform(iface); in start_reboot()
1100 send_request(iface); in start_reboot()
1106 struct interface *iface = arg; in start_interface() local
1107 struct if_options *ifo = iface->state->options; in start_interface()
1113 handle_carrier(iface->name); in start_interface()
1114 if (iface->carrier == LINK_DOWN) { in start_interface()
1115 syslog(LOG_INFO, "%s: waiting for carrier", iface->name); in start_interface()
1119 iface->start_uptime = uptime(); in start_interface()
1120 free(iface->state->offer); in start_interface()
1121 iface->state->offer = NULL; in start_interface()
1123 if (iface->state->arping_index < ifo->arping_len) { in start_interface()
1124 start_arping(iface); in start_interface()
1128 start_static(iface); in start_interface()
1132 start_inform(iface); in start_interface()
1135 if (iface->hwlen == 0 && ifo->clientid[0] == '\0') { in start_interface()
1137 iface->name); in start_interface()
1138 drop_config(iface, "FAIL"); in start_interface()
1139 close_sockets(iface); in start_interface()
1140 delete_timeout(NULL, iface); in start_interface()
1144 nolease = iface->state->offer && options & DHCPCD_TEST; in start_interface()
1146 iface->state->offer = read_lease(iface); in start_interface()
1147 if (iface->state->offer) { in start_interface()
1148 get_lease(&iface->state->lease, iface->state->offer); in start_interface()
1149 iface->state->lease.frominfo = 1; in start_interface()
1150 if (iface->state->offer->cookie == 0) { in start_interface()
1151 if (iface->state->offer->yiaddr == in start_interface()
1152 iface->addr.s_addr) in start_interface()
1154 free(iface->state->offer); in start_interface()
1155 iface->state->offer = NULL; in start_interface()
1157 } else if (iface->state->lease.leasetime != ~0U && in start_interface()
1158 stat(iface->leasefile, &st) == 0) in start_interface()
1162 if ((time_t)iface->state->lease.leasetime < in start_interface()
1167 iface->name); in start_interface()
1168 free(iface->state->offer); in start_interface()
1169 iface->state->offer = NULL; in start_interface()
1170 iface->state->lease.addr.s_addr = 0; in start_interface()
1173 iface->state->lease.leasetime -= l; in start_interface()
1174 iface->state->lease.renewaltime -= l; in start_interface()
1175 iface->state->lease.rebindtime -= l; in start_interface()
1179 if (iface->state->offer == NULL) in start_interface()
1180 start_discover(iface); in start_interface()
1181 else if (iface->state->offer->cookie == 0 && in start_interface()
1182 iface->state->options->options & DHCPCD_IPV4LL) in start_interface()
1183 start_ipv4ll(iface); in start_interface()
1185 start_reboot(iface); in start_interface()
1189 init_state(struct interface *iface, int argc, char **argv) in init_state() argument
1193 if (iface->state) in init_state()
1194 ifs = iface->state; in init_state()
1196 ifs = iface->state = xzalloc(sizeof(*ifs)); in init_state()
1201 configure_interface(iface, argc, argv); in init_state()
1203 run_script(iface); in init_state()
1207 unlink(iface->leasefile); in init_state()
1210 switch (carrier_status(iface)) { in init_state()
1212 iface->carrier = LINK_DOWN; in init_state()
1216 iface->carrier = LINK_UP; in init_state()
1220 iface->carrier = LINK_UNKNOWN; in init_state()
1224 run_script(iface); in init_state()
1226 iface->carrier = LINK_UNKNOWN; in init_state()
1383 if_reboot(struct interface *iface, int argc, char **argv) in if_reboot() argument
1388 ifo = iface->state->options; in if_reboot()
1390 configure_interface(iface, argc, argv); in if_reboot()
1391 ifo = iface->state->options; in if_reboot()
1392 iface->state->interval = 0; in if_reboot()
1394 iface->addr.s_addr != ifo->req_addr.s_addr) || in if_reboot()
1398 drop_config(iface, "EXPIRE"); in if_reboot()
1400 free(iface->state->offer); in if_reboot()
1401 iface->state->offer = NULL; in if_reboot()
1403 start_interface(iface); in if_reboot()
1682 open_sockets(struct interface *iface) in open_sockets() argument
1684 if (iface->raw_fd == -1) { in open_sockets()
1685 if (open_socket(iface, ETHERTYPE_IP) == -1) in open_sockets()
1686 syslog(LOG_ERR, "%s: open_socket: %m", iface->name); in open_sockets()
1688 add_event(iface->raw_fd, handle_dhcp_packet, iface); in open_sockets()
1690 if (iface->udp_fd == -1 && in open_sockets()
1691 iface->addr.s_addr != 0 && in open_sockets()
1692 iface->state->new != NULL && in open_sockets()
1693 (iface->state->new->cookie == htonl(MAGIC_COOKIE) || in open_sockets()
1694 iface->state->options->options & DHCPCD_INFORM)) in open_sockets()
1696 if (open_udp_socket(iface) == -1 && errno != EADDRINUSE) in open_sockets()
1697 syslog(LOG_ERR, "%s: open_udp_socket: %m", iface->name); in open_sockets()
1702 close_sockets(struct interface *iface) in close_sockets() argument
1704 if (iface->arp_fd != -1) { in close_sockets()
1705 delete_event(iface->arp_fd); in close_sockets()
1706 close(iface->arp_fd); in close_sockets()
1707 iface->arp_fd = -1; in close_sockets()
1709 if (iface->raw_fd != -1) { in close_sockets()
1710 delete_event(iface->raw_fd); in close_sockets()
1711 close(iface->raw_fd); in close_sockets()
1712 iface->raw_fd = -1; in close_sockets()
1714 if (iface->udp_fd != -1) { in close_sockets()
1716 close(iface->udp_fd); in close_sockets()
1717 iface->udp_fd = -1; in close_sockets()
1747 struct interface *iface; in main() local
1858 ifaces = iface = xzalloc(sizeof(*iface)); in main()
1859 strlcpy(iface->name, argv[optind], sizeof(iface->name)); in main()
1860 snprintf(iface->leasefile, sizeof(iface->leasefile), in main()
1861 LEASEFILE, iface->name); in main()
1862 iface->state = xzalloc(sizeof(*iface->state)); in main()
1863 iface->state->options = xzalloc(sizeof(*iface->state->options)); in main()
1864 strlcpy(iface->state->options->script, if_options->script, in main()
1865 sizeof(iface->state->options->script)); in main()
1866 iface->state->new = read_lease(iface); in main()
1867 if (iface->state->new == NULL && errno == ENOENT) { in main()
1868 strlcpy(iface->leasefile, argv[optind], in main()
1869 sizeof(iface->leasefile)); in main()
1870 iface->state->new = read_lease(iface); in main()
1872 if (iface->state->new == NULL) { in main()
1875 iface->name); in main()
1878 iface->state->reason = "DUMP"; in main()
1879 run_script(iface); in main()
2052 for (iface = ifaces; iface; iface = iface->next) in main()
2053 if (strcmp(iface->name, ifv[i]) == 0) in main()
2055 if (!iface) in main()
2075 for (iface = ifaces; iface; iface = iface->next) { in main()
2076 init_state(iface, argc, argv); in main()
2077 if (iface->carrier != LINK_DOWN) in main()
2092 for (iface = ifaces; iface; iface = iface->next) { in main()
2093 handle_carrier(iface->name); in main()
2094 if (iface->carrier != LINK_DOWN) { in main()
2117 for (iface = ifaces; iface; iface = iface->next) in main()
2118 add_timeout_sec(0, start_interface, iface); in main()