|
|
1.1 ! root 1: /* dgparse.c - dgparse */ ! 2: ! 3: #include <conf.h> ! 4: #include <kernel.h> ! 5: #include <network.h> ! 6: #include "/usr/include/ctype.h" ! 7: ! 8: /*------------------------------------------------------------------------ ! 9: * dgparse - parse foreign address specification; get IP and port #s ! 10: *------------------------------------------------------------------------ ! 11: */ ! 12: dgparse(dgptr, fspec) ! 13: struct dgblk *dgptr; ! 14: char *fspec; ! 15: { ! 16: int i, byte; ! 17: char ch; ! 18: char *ipptr; ! 19: ! 20: if (fspec == ANYFPORT) { ! 21: dgptr->dg_fport = 0; ! 22: return(OK); ! 23: } ! 24: ! 25: /* parse forms like 192.5.48.30:3 into (ip-address,udp-port) */ ! 26: ! 27: ipptr = (char *) dgptr->dg_faddr; ! 28: for (i=0 ; i<4 ; i++) { ! 29: byte = 0; ! 30: while ( isdigit(ch = *fspec++) ) ! 31: byte = 10*byte + (ch - '0'); ! 32: if (byte > 256 || (i<3 && ch!='.') ) ! 33: return(SYSERR); ! 34: *ipptr++ = (char)byte; ! 35: } ! 36: if (ch != ':') ! 37: return(SYSERR); ! 38: i = 0; ! 39: while ( isdigit(ch = *fspec++) ) ! 40: i = 10*i + (ch - '0'); ! 41: if (i==0 || ch!='\0') ! 42: return(SYSERR); ! 43: dgptr->dg_fport = i; ! 44: return(OK); ! 45: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.