|
|
1.1 ! root 1: /* udpsend.c - udpsend */ ! 2: ! 3: #include <conf.h> ! 4: #include <kernel.h> ! 5: #include <network.h> ! 6: ! 7: /*------------------------------------------------------------------------ ! 8: * udpsend - send one UDP datagram to a given (foreign) IP address ! 9: *------------------------------------------------------------------------ ! 10: */ ! 11: udpsend(faddr, fport, lport, packet, datalen) ! 12: IPaddr faddr; ! 13: short fport; ! 14: short lport; ! 15: struct epacket *packet; ! 16: int datalen; ! 17: { ! 18: register struct udp *udpptr; ! 19: register struct ip *ipptr; ! 20: ! 21: /* Fill in UDP header; pass to ipsend to fill in IP header */ ! 22: ! 23: ipptr = (struct ip *) packet->ep_data; ! 24: ipptr->i_proto = IPRO_UDP; ! 25: udpptr = (struct udp *) ipptr->i_data; ! 26: udpptr->u_sport = hs2net(lport); ! 27: udpptr->u_dport = hs2net(fport); ! 28: udpptr->u_udplen = hs2net(UHLEN+datalen); ! 29: if (isodd(datalen)) ! 30: udpptr->u_data[datalen] = (char)0; ! 31: udpptr->u_ucksum = 0; ! 32: return( ipsend(faddr, packet, UHLEN+datalen) ); ! 33: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.