[Linux-decnet-commit] CVS: dnprogs/multinet multinet.c,1.6,1.7
Brought to you by:
chrissie_c,
ph3-der-loewe
From: Patrick C. <pa...@us...> - 2006-04-05 07:20:56
|
Update of /cvsroot/linux-decnet/dnprogs/multinet In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv1700 Modified Files: multinet.c Log Message: Allow multiple servers to run at once (I think) Index: multinet.c =================================================================== RCS file: /cvsroot/linux-decnet/dnprogs/multinet/multinet.c,v retrieving revision 1.6 retrieving revision 1.7 diff -C2 -r1.6 -r1.7 *** multinet.c 29 Mar 2006 16:25:02 -0000 1.6 --- multinet.c 5 Apr 2006 07:20:47 -0000 1.7 *************** *** 237,240 **** --- 237,241 ---- { int fd; + int flag = 1; struct sockaddr_in sin; *************** *** 243,246 **** --- 244,250 ---- return -1; + + setsockopt(fd, SOL_SOCKET, SO_REUSEADDR, (char *)&flag, sizeof(flag)); + sin.sin_family = AF_INET; sin.sin_port = htons(port); *************** *** 271,278 **** unsigned char buf[1600]; int len; ! len = read(ipfd, buf, sizeof(buf)); if (len <= 0) return; last_ip_packet = time(NULL); --- 275,289 ---- unsigned char buf[1600]; int len; + struct sockaddr_in sin; + unsigned int sinlen = sizeof(sin); ! len = recvfrom(ipfd, buf, sizeof(buf), 0, (struct sockaddr *)&sin, &sinlen); if (len <= 0) return; + /* Ignore packets from people we're not talking to */ + if (sin.sin_port != remote_addr.sin_port || + sin.sin_addr.s_addr != remote_addr.sin_addr.s_addr) + return; + last_ip_packet = time(NULL); |