aboutsummaryrefslogtreecommitdiff
path: root/man/man3/udpread.3
blob: 11412596a2ec266be48cf36cd36814b34f52bf0a (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
.IR ip (3)