Blob


1 .TH UDPREAD 3
2 .SH NAME
3 udpread, udpwrite \- read and write UDP packets
4 .SH SYNOPSIS
5 .B #include <u.h>
6 .PP
7 .B #include <libc.h>
8 .PP
9 .B #include <ip.h>
10 .PP
11 .B
12 .nf
13 .ta +4n +8n
14 typedef struct Udphdr Udphdr;
15 struct Udphdr
16 {
17 uchar raddr[IPaddrlen]; /* remote address and port */
18 uchar laddr[IPaddrlen]; /* local address and port */
19 uchar rport[2];
20 uchar lport[2];
21 };
22 .PP
23 .B
24 long udpread(int fd, Udphdr *hdr, void *data, long n)
25 .PP
26 .B
27 long udpwrite(int fd, Udphdr *hdr, void *data, long n)
28 .SH DESCRIPTION
29 .I Udpread
30 and
31 .I udpwrite
32 read and write UDP packets from the UDP network connection
33 established on file descriptor
34 .IR fd .
35 .PP
36 .I Udpread
37 reads at most
38 .I n
39 bytes of packet body into
40 .I data ,
41 stores the header in
42 .IR hdr ,
43 and returns the number of bytes stored in
44 .IR data .
45 .PP
46 .I Udpwrite
47 writes the
48 .I n
49 bytes stored in
50 .I data
51 in a UDP packet with header
52 .IR hdr .
53 .PP
54 Note that the
55 .B Udphdr
56 frames the addresses as local and remote
57 instead of source and destination.
58 Thus the
59 .I hdr
60 filled in for a packet read by
61 .I udpread
62 can be used unchanged in
63 .I udpwrite
64 to send a response back to the sender of the original packet.
65 .SH SOURCE
66 .B \*9/src/lib9/udp.c
67 .SH SEE ALSO
68 .MR ip (3)