uroute —
networking route objects
PDEL Library (libpdel, -lpdel)
#include
<sys/types.h>
#include <sys/socket.h>
#include <stdio.h>
#include
<pdel/net/uroute.h>
struct uroute *
uroute_create(const
struct sockaddr *dest,
const struct sockaddr
*gateway, const struct
sockaddr *netmask);
void
uroute_destroy(struct
uroute **routep);
const struct sockaddr *
uroute_get_dest(struct
uroute *route);
const struct sockaddr *
uroute_get_gateway(struct
uroute *route);
const struct sockaddr *
uroute_get_netmask(struct
uroute *route);
int
uroute_get_flags(struct
uroute *route);
void
uroute_set_flags(struct
uroute *route, int
flags);
int
uroute_add(struct
uroute *route);
int
uroute_delete(struct
uroute *route);
struct uroute *
uroute_get(const
struct sockaddr *dest);
int
uroute_get_all(struct
uroute ***listp, const
char *mtype);
void
uroute_print(struct
uroute *route, FILE
*fp);
These functions support uroute objects,
used for representing kernel routes in user code. Each
uroute instance is represented by a
struct uroute.
uroute_create()
creates a new uroute object using copies of the
supplied dest, gateway, and
netmask. The netmask should be
NULL to specify a host route instead of a network
route.
uroute_destroy()
destroys the object pointed to by *routep. Upon
return, *routep will be set to
NULL. If *routep is already
NULL when uroute_destroy()
is invoked, nothing happens.
uroute_get_dest(),
uroute_get_gateway(),
and
uroute_get_netmask()
return the addresses associated with the route. Note that
uroute_get_netmask() returns
NULL to indicate that route is
a host route.
uroute_get_flags()
and
uroute_set_flags()
are used to access or modify the flags associated with the route; these
flags are defined in the header file
<net/route.h>. The only flag set for a newly
created route is RTF_STATIC.
uroute_add()
attempts to add the route to the kernel routing
table.
uroute_delete()
attempts to remove the route from the kernel routing
table.
uroute_get()
attempts to retrieve the route matching dest from the
kernel routing table.
uroute_get_all()
retrieves the entire kernel routing table. Zero or more
uroute objects are constructed and pointed to by the
elements of a newly allocated array of pointers. The length of the array is
returned by uroute_get_all() and a pointer to the
array is stored in *listp. The array itself is
allocated with
typed_mem(3)
type mtype, and the caller is responsible for
eventually freeing it (as well as destroying the individudal
uroute objects).
uroute_print()
prints out uroute to the stream
fp for debugging purposes.
uroute_create(),
uroute_add(),
uroute_delete(),
uroute_get(), and
uroute_get_all() return -1 or
NULL to indicate an error, with
errno set appropriately.
The PDEL library was developed at Packet Design, LLC.
http://www.packetdesign.com/
Archie Cobbs
⟨archie@freebsd.org⟩