Carries out a request to change the routing table.
#include <sys/types.h>
#include <sys/errno.h>
#include <sys/mbuf.h>
#include <net/if.h>
#include <net/af.h>
#include <net/route.h>
int rtrequest_gr ( req, dst, gateway, netmask, flags, ret_nrt, rt_parm)
int req;
struct sockaddr *dst, *
gateway
, *netmask;
int flags;
struct rtentry **
ret_nrt;
struct rtreq_parm *
rt_parm;
| Item | Description |
|---|---|
| req | Specifies a request to add or delete a route. |
| dst | Specifies the destination part of the route. |
| gateway | Specifies the gateway part of the route. |
| netmask | Specifies the network mask to apply to the route. |
| flags | Identifies routing flags, as defined in the /usr/include/net/route.h file. |
| ret_nrt | Specifies to return the resultant route. |
| rt_parm | Points to the rtreq_parm structure. The /usr/include/net/radix.h file contains the rtreq_parm structure. Through this structure, the route attributes like group list, policy, weight, WPAR ID, interface can be specified. |
The rtrequest_gr kernel service carries out a request to change the routing table. Interfaces call the rtrequest_gr service at boot time to make their local routes known for routing table ioctl operations. Interfaces also call the rtrequest_gr service as the result of routing redirects. The request is either to add (if the req parameter has a value of RMT_ADD) or delete (the req parameter is a value of RMT_DELETE) the route.
The rtrequest_gr kernel service can be called from either the process or interrupt environment.
| Item | Description |
|---|---|
| 0 | Indicates a successful operation. |
| ESRCH | Indicates that the route was not there to delete. |
| EEXIST | Indicates that the entry the rtrequest_gr service tried to add already exists. |
| ENETUNREACH | Indicates that the rtrequest_gr service cannot find the interface for the route. |
| ENOBUFS | Indicates that the rtrequest_gr service cannot get an mbuf structure to add an entry. |
To carry out a request to change the routing table, invoke the rtrequest_gr kernel service as follows:
rtrequest_gr(RTM_ADD, dst, gateway, netmask, flags, &rtp, &rtreq);