|
|
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.