#include #include #include #include #include "scancusts.h" #include "iptable.h" cust_t *getcust(void ) { static int fileopen=0; static int linenumber=0; static FILE *fd; static cust_t cust; unsigned int i1,i2,i3,i4,netmask; char part1[255],part2[255]; // char customer[255]; int items1,items2; if (!fileopen) { fd=fopen("custs","r"); if (!fd) { perror("Opening custs file"); exit(1); } fileopen=1; } if (!feof(fd)) { bzero(&cust,sizeof( cust_t ) ); i1=i2=i3=i4=0; netmask=32; /* Defailt if no Netmask */ items1=fscanf(fd,"%s%s\n",part1,part2); linenumber++; items2=sscanf(part1,"%u.%u.%u.%u/%u\n",&i1,&i2,&i3,&i4,&netmask); if ((items2 != 4) &&(items2 != 5)) { printf ("Bad Statement in Line %d : %s %s\n",linenumber,part1, part2); exit(1); } else { cust.network=(i1<<24)+(i2<<16)+(i3<<8)+i4; cust.netmask=netmask; strncpy(cust.name,part2,200); } return (&cust); } else { fclose(fd); return 0; } } #ifdef DEBUG_MAIN int main() { cust_t *cust; while((cust=getcust())) { printf("Customer:%s\n",cust->name); printf("IP:%08lx ",cust->network ); printf(" %u\n" ,cust->netmask); } return 0; } #endif