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