static int if_print(char *ifname) { int res; if (!ifname) { res = for_all_interfaces(do_if_print, &opt_a); } else { struct interface *ife; ife = lookup_interface(ifname); res = do_if_fetch(ife); if (res >= 0) ife_print(ife); } return res; }
static int set_ifstate(char *parent, unsigned long ip, unsigned long nm, unsigned long bc, int flag) { char buf[IFNAMSIZ]; struct ifcmd pt; int i; pt.base = parent; pt.baselen = strlen(parent); pt.addr = ip; pt.flag = flag; memset(searcher, 0, sizeof(searcher)); i = for_all_interfaces((int (*)(struct interface *,void *))do_ifcmd, &pt); if (i == -1) return -1; if (i == 1) return 0; /* add a new interface */ for (i = 0; i < 256; i++) if (searcher[i] == 0) break; if (i == 256) return -1; /* FAILURE!!! out of ip addresses */ if (snprintf(buf, IFNAMSIZ, "%s:%d", parent, i) > IFNAMSIZ) return -1; if (set_ip_using(buf, SIOCSIFADDR, ip) == -1) return -1; if (set_ip_using(buf, SIOCSIFNETMASK, nm) == -1) return -1; if (set_ip_using(buf, SIOCSIFBRDADDR, bc) == -1) return -1; if (set_flag(buf, IFF_BROADCAST) == -1) return -1; return 0; }
static int if_print(char *ifname) { int res; if (ife_short) printf(_("Iface MTU Met RX-OK RX-ERR RX-DRP RX-OVR TX-OK TX-ERR TX-DRP TX-OVR Flg\n")); if (!ifname) { res = for_all_interfaces(do_if_print, &opt_a); } else { struct interface *ife; ife = lookup_interface(ifname); if (!ife) { return -1; } res = do_if_fetch(ife); if (res >= 0) ife_print(ife); } return res; }