#include #include #include char *mtab[10] = {"/net", "/net.alt"}; int nmtab = 2; void ipifcprint(char *m, int idx) { Ipifc *ifc; Iplifc *l; uchar eth[6]; for(ifc = readipifc(m, 0, idx); ifc; ifc = ifc->next){ print("%d:%s ", ifc->index, ifc->dev); if(myetheraddr(eth, ifc->dev) == 0) print("\t" "%E", eth); print("\t" "%d\n", ifc->mtu); for(l = ifc->lifc; l; l = l->next) print("\t" "%I%M" "\t" "%I\n", l->ip, l->mask, l->net); } // freeipifc(ifc); } void usage(void) { fprint(2, "usage: ipfic [-m net mtpt] [interface number] ...\n"); exits("usage"); } void main(int argc, char **argv){ char* r; int i, m; m = 0; ARGBEGIN{ case 'm': if(m++ == 0) nmtab = 0; if(++nmtab < nelem(mtab)) mtab[nmtab-1] = EARGF(usage()); break; }ARGEND; fmtinstall('I', eipfmt); fmtinstall('M', eipfmt); fmtinstall('E', eipfmt); if(*argv) for(; *argv; argv++){ i = strtoul(*argv, &r, 0); if (*r) usage(); ipifcprint(mtab[0], i); } else for(i = 0; i < nmtab; i++) ipifcprint(mtab[i], -1); exits(0); }