| RTREQUEST(9) | Kernel Developer's Manual | RTREQUEST(9) |
rtrequest — add or
remove entries from a routing table
#include
<sys/types.h>
#include <net/route.h>
int
rtrequest(int
req, struct rt_addrinfo
*info, u_int8_t
prio, struct rtentry
**rtp, u_int
rtableid);
struct rt_addrinfo {
int rti_addrs;
struct sockaddr *rti_info[RTAX_MAX];
int rti_flags;
struct ifaddr *rti_ifa;
struct rt_msghdr *rti_rtm;
u_char rti_mpls;
};
#define RTAX_DST 0 /* destination sockaddr present */
#define RTAX_GATEWAY 1 /* gateway sockaddr present */
#define RTAX_NETMASK 2 /* netmask sockaddr present */
#define RTAX_IFP 4 /* interface name sockaddr present */
#define RTAX_IFA 5 /* interface addr sockaddr present */
#define RTAX_AUTHOR 6 /* sockaddr for author of redirect */
#define RTAX_BRD 7 /* for NEWADDR, broadcast or p-p dest */
#define RTAX_SRC 8 /* source sockaddr present */
#define RTAX_SRCMASK 9 /* source netmask present */
#define RTAX_LABEL 10 /* route label present */
#define RTAX_MAX 11 /* size of array to allocate */
The
rtrequest()
function is used to add or remove entries from a specific routing table. It
takes the following arguments:
RTM_ADDRTM_DELETERTM_RESOLVE0 and the
requested action is RTM_ADD then a default
priority based on the priority of the associated interface is chosen.RTM_RESOLVE. In all cases when no error is
returned and it is not NULL, a pointer to the
deleted or added entry is placed there. The caller must take care of
releasing the returned reference by calling
rtfree(9).rtrequest() can be called during autoconf,
from process context, or from interrupt context.
rtrequest() may fail with:
EAFNOSUPPORT]ESRCH]ESRCH]ESRCH]EINVAL]RTM_RESOLVE
case.EEXIST]EEXIST]ENOMEM]ENOBUFS]ENETUNREACH]| July 12, 2019 | openbsd |