Annotation of embedaddon/libpdel/net/route_msg.3, revision 1.1.1.1
1.1 misho 1: .\" Copyright (c) 2001-2002 Packet Design, LLC.
2: .\" All rights reserved.
3: .\"
4: .\" Subject to the following obligations and disclaimer of warranty,
5: .\" use and redistribution of this software, in source or object code
6: .\" forms, with or without modifications are expressly permitted by
7: .\" Packet Design; provided, however, that:
8: .\"
9: .\" (i) Any and all reproductions of the source or object code
10: .\" must include the copyright notice above and the following
11: .\" disclaimer of warranties; and
12: .\" (ii) No rights are granted, in any manner or form, to use
13: .\" Packet Design trademarks, including the mark "PACKET DESIGN"
14: .\" on advertising, endorsements, or otherwise except as such
15: .\" appears in the above copyright notice or in the software.
16: .\"
17: .\" THIS SOFTWARE IS BEING PROVIDED BY PACKET DESIGN "AS IS", AND
18: .\" TO THE MAXIMUM EXTENT PERMITTED BY LAW, PACKET DESIGN MAKES NO
19: .\" REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED, REGARDING
20: .\" THIS SOFTWARE, INCLUDING WITHOUT LIMITATION, ANY AND ALL IMPLIED
21: .\" WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE,
22: .\" OR NON-INFRINGEMENT. PACKET DESIGN DOES NOT WARRANT, GUARANTEE,
23: .\" OR MAKE ANY REPRESENTATIONS REGARDING THE USE OF, OR THE RESULTS
24: .\" OF THE USE OF THIS SOFTWARE IN TERMS OF ITS CORRECTNESS, ACCURACY,
25: .\" RELIABILITY OR OTHERWISE. IN NO EVENT SHALL PACKET DESIGN BE
26: .\" LIABLE FOR ANY DAMAGES RESULTING FROM OR ARISING OUT OF ANY USE
27: .\" OF THIS SOFTWARE, INCLUDING WITHOUT LIMITATION, ANY DIRECT,
28: .\" INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, PUNITIVE, OR CONSEQUENTIAL
29: .\" DAMAGES, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, LOSS OF
30: .\" USE, DATA OR PROFITS, HOWEVER CAUSED AND UNDER ANY THEORY OF
31: .\" LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
32: .\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
33: .\" THE USE OF THIS SOFTWARE, EVEN IF PACKET DESIGN IS ADVISED OF
34: .\" THE POSSIBILITY OF SUCH DAMAGE.
35: .\"
36: .\" Author: Archie Cobbs <archie@freebsd.org>
37: .\"
38: .\" $Id: route_msg.3,v 1.7 2004/06/02 17:24:37 archie Exp $
39: .\"
40: .Dd April 22, 2002
41: .Dt ROUTE_MSG 3
42: .Os
43: .Sh NAME
44: .Nm route_msg
45: .Nd routing socket message objects
46: .Sh LIBRARY
47: PDEL Library (libpdel, \-lpdel)
48: .Sh SYNOPSIS
49: .In sys/types.h
50: .In stdio.h
51: .In pdel/net/route_msg.h
52: .Ft "struct route_msg *"
53: .Fn route_msg_create "void"
54: .Ft "void"
55: .Fn route_msg_destroy "struct route_msg **msgp"
56: .Ft "int"
57: .Fn route_msg_get_type "struct route_msg *msg"
58: .Ft "void"
59: .Fn route_msg_set_type "struct route_msg *msg" "int type"
60: .Ft "int"
61: .Fn route_msg_get_index "struct route_msg *msg"
62: .Ft "void"
63: .Fn route_msg_set_index "struct route_msg *msg" "int index"
64: .Ft "int"
65: .Fn route_msg_get_flags "struct route_msg *msg"
66: .Ft "void"
67: .Fn route_msg_set_flags "struct route_msg *msg" "int flags"
68: .Ft "int"
69: .Fn route_msg_get_error "struct route_msg *msg"
70: .Ft "pid_t"
71: .Fn route_msg_get_pid "struct route_msg *msg"
72: .Ft "int"
73: .Fn route_msg_get_seq "struct route_msg *msg"
74: .Ft "const struct sockaddr *"
75: .Fn route_msg_get_dest "struct route_msg *msg"
76: .Ft "int"
77: .Fn route_msg_set_dest "struct route_msg *msg" "const struct sockaddr *dest"
78: .Ft "const struct sockaddr *"
79: .Fn route_msg_get_gateway "struct route_msg *msg"
80: .Ft "int"
81: .Fn route_msg_set_gateway "struct route_msg *msg" "const struct sockaddr *gateway"
82: .Ft "const struct sockaddr *"
83: .Fn route_msg_get_netmask "struct route_msg *msg"
84: .Ft "int"
85: .Fn route_msg_set_netmask "struct route_msg *msg" "const struct sockaddr *netmask"
86: .Ft "const struct sockaddr *"
87: .Fn route_msg_get_genmask "struct route_msg *msg"
88: .Ft "int"
89: .Fn route_msg_set_genmask "struct route_msg *msg" "const struct sockaddr *genmask"
90: .Ft "const struct sockaddr *"
91: .Fn route_msg_get_ifp "struct route_msg *msg"
92: .Ft "int"
93: .Fn route_msg_set_ifp "struct route_msg *msg" "const struct sockaddr *ifp"
94: .Ft "const struct sockaddr *"
95: .Fn route_msg_get_ifa "struct route_msg *msg"
96: .Ft "int"
97: .Fn route_msg_set_ifa "struct route_msg *msg" "const struct sockaddr *ifa"
98: .Ft "const struct sockaddr *"
99: .Fn route_msg_get_author "struct route_msg *msg"
100: .Ft "int"
101: .Fn route_msg_set_author "struct route_msg *msg" "const struct sockaddr *author"
102: .Ft "const struct sockaddr *"
103: .Fn route_msg_get_brd "struct route_msg *msg"
104: .Ft "int"
105: .Fn route_msg_set_brd "struct route_msg *msg" "const struct sockaddr *brd"
106: .Ft "int"
107: .Fn route_msg_decode "const u_char *data" "size_t dlen" "struct route_msg ***listp" "const char *mtype"
108: .Ft "int"
109: .Fn route_msg_encode "const struct route_msg *msg" "u_char *data" "size_t dlen"
110: .Ft "void"
111: .Fn route_msg_print "struct route_msg *msg" "FILE *fp"
112: .Ft "int"
113: .Fn route_msg_send "struct route_msg *msg" "int sock"
114: .Ft "int"
115: .Fn route_msg_recv "struct route_msg ***listp" "int sock" "const char *mtype"
116: .Sh DESCRIPTION
117: These functions support
118: .Nm "route_msg"
119: objects, used for communication over kernel routing sockets.
120: The routing socket messages are defined in the header file
121: .Li "<net/route.h>" .
122: Each
123: .Nm route_msg
124: instance is represented by a
125: .Li "struct route_msg" .
126: .Pp
127: .Fn route_msg_create
128: creates a new, empty
129: .Nm route_msg
130: object.
131: .Pp
132: .Fn route_msg_destroy
133: destroys the object pointed to by
134: .Fa "*msgp" .
135: Upon return,
136: .Fa "*msgp"
137: will be set to
138: .Dv NULL .
139: If
140: .Fa "*msgp"
141: is already
142: .Dv NULL
143: when
144: .Fn route_msg_destroy
145: is invoked, nothing happens.
146: .Pp
147: The
148: .Fn route_msg_get_XXX
149: and
150: .Fn route_msg_set_XXX
151: routines allow reading and changing the attributes associated with a
152: .Nm route_msg
153: object.
154: .Pp
155: .Fn route_msg_decode
156: decodes routing messages from data encoded in the format used when
157: communicating over kernel routing sockets.
158: The encoded data is pointed to by
159: .Fa data
160: and has length
161: .Fa dlen .
162: Zero or more
163: .Nm route_msg
164: objects are constructed and pointed to by the elements of a newly
165: allocated array of pointers.
166: The length of the array is returned by
167: .Fn route_msg_decode
168: and a pointer to the array is stored in
169: .Fa "*listp" .
170: The array itself is allocated with
171: .Xr typed_mem 3
172: type
173: .Fa mtype ,
174: and the caller is responsible for eventually freeing it (as well as
175: destroying the individudal
176: .Nm route_msg
177: objects).
178: If the encoded data is invalid, -1 is returned with
179: .Va errno
180: set to
181: .Er EINVAL .
182: .Pp
183: .Fn route_msg_encode
184: encodes a
185: .Nm route_msg
186: object into the format used when communicating over kernel routing sockets.
187: The resulting data is stored in the buffer pointed to by
188: .Fa data ,
189: which must have length at least
190: .Fa dlen .
191: If the encoding does not fit in
192: .Fa dlen
193: bytes, -1 is returned with
194: .Va errno
195: set to
196: .Er EMSGSIZE .
197: Otherwise, the number of bytes actually written into
198: .Fa data
199: is returned.
200: .Pp
201: .Fn route_msg_print
202: prints out a
203: .Nm route_msg
204: object to the stream
205: .Fa fp
206: for debugging purposes.
207: .Pp
208: .Fn route_msg_send
209: encodes and writes the
210: .Nm route_msg
211: object to the routing socket descriptor
212: .Fa sock .
213: .Pp
214: .Nm route_msg_recv
215: reads the next packet from the routing socket descriptor
216: .Fa sock
217: and decodes
218: .Nm route_msg
219: objects from the data read.
220: The
221: .Fa listp
222: and
223: .Fa mtype
224: parameters are the same as with
225: .Fn route_msg_decode .
226: .Sh RETURN VALUES
227: Except for functions returning
228: .Li "void" ,
229: all of the above functions return -1 or
230: .Dv NULL
231: to indicate an error, with
232: .Va errno
233: set appropriately.
234: .Sh SEE ALSO
235: .Xr if_util 3 ,
236: .Xr libpdel 3 ,
237: .Xr typed_mem 3 ,
238: .Xr uroute 3 ,
239: .Xr route 4
240: .Sh HISTORY
241: The PDEL library was developed at Packet Design, LLC.
242: .Dv "http://www.packetdesign.com/"
243: .Sh AUTHORS
244: .An Archie Cobbs Aq archie@freebsd.org
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>