The Design and Implementation of the FreeBSD Operating System, Second Edition
Now available: The Design and Implementation of the FreeBSD Operating System (Second Edition)


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]

FreeBSD/Linux Kernel Cross Reference
sys/net/route.h

Version: -  FREEBSD  -  FREEBSD-13-STABLE  -  FREEBSD-13-0  -  FREEBSD-12-STABLE  -  FREEBSD-12-0  -  FREEBSD-11-STABLE  -  FREEBSD-11-0  -  FREEBSD-10-STABLE  -  FREEBSD-10-0  -  FREEBSD-9-STABLE  -  FREEBSD-9-0  -  FREEBSD-8-STABLE  -  FREEBSD-8-0  -  FREEBSD-7-STABLE  -  FREEBSD-7-0  -  FREEBSD-6-STABLE  -  FREEBSD-6-0  -  FREEBSD-5-STABLE  -  FREEBSD-5-0  -  FREEBSD-4-STABLE  -  FREEBSD-3-STABLE  -  FREEBSD22  -  l41  -  OPENBSD  -  linux-2.6  -  MK84  -  PLAN9  -  xnu-8792 
SearchContext: -  none  -  3  -  10 

    1 /*      $OpenBSD: route.h,v 1.198 2023/01/28 10:17:16 mvs Exp $ */
    2 /*      $NetBSD: route.h,v 1.9 1996/02/13 22:00:49 christos Exp $       */
    3 
    4 /*
    5  * Copyright (c) 1980, 1986, 1993
    6  *      The Regents of the University of California.  All rights reserved.
    7  *
    8  * Redistribution and use in source and binary forms, with or without
    9  * modification, are permitted provided that the following conditions
   10  * are met:
   11  * 1. Redistributions of source code must retain the above copyright
   12  *    notice, this list of conditions and the following disclaimer.
   13  * 2. Redistributions in binary form must reproduce the above copyright
   14  *    notice, this list of conditions and the following disclaimer in the
   15  *    documentation and/or other materials provided with the distribution.
   16  * 3. Neither the name of the University nor the names of its contributors
   17  *    may be used to endorse or promote products derived from this software
   18  *    without specific prior written permission.
   19  *
   20  * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
   21  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
   22  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
   23  * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
   24  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
   25  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
   26  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
   27  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
   28  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
   29  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
   30  * SUCH DAMAGE.
   31  *
   32  *      @(#)route.h     8.3 (Berkeley) 4/19/94
   33  */
   34 
   35 #ifndef _NET_ROUTE_H_
   36 #define _NET_ROUTE_H_
   37 
   38 /*
   39  * Locks used to protect struct members in this file:
   40  *      I       immutable after creation
   41  *      T       rttimer_mtx             route timer lists
   42  */
   43 
   44 /*
   45  * Kernel resident routing tables.
   46  *
   47  * The routing tables are initialized when interface addresses
   48  * are set by making entries for all directly connected interfaces.
   49  */
   50 
   51 #ifdef _KERNEL
   52 /*
   53  * These numbers are used by reliable protocols for determining
   54  * retransmission behavior and are included in the routing structure.
   55  */
   56 struct rt_kmetrics {
   57         u_int64_t       rmx_pksent;     /* packets sent using this route */
   58         int64_t         rmx_expire;     /* lifetime for route, e.g. redirect */
   59         u_int           rmx_locks;      /* Kernel must leave these values */
   60         u_int           rmx_mtu;        /* MTU for this path */
   61 };
   62 #endif
   63 
   64 /*
   65  * Huge version for userland compatibility.
   66  */
   67 struct rt_metrics {
   68         u_int64_t       rmx_pksent;     /* packets sent using this route */
   69         int64_t         rmx_expire;     /* lifetime for route, e.g. redirect */
   70         u_int           rmx_locks;      /* Kernel must leave these values */
   71         u_int           rmx_mtu;        /* MTU for this path */
   72         u_int           rmx_refcnt;     /* # references hold */
   73         /* some apps may still need these no longer used metrics */
   74         u_int           rmx_hopcount;   /* max hops expected */
   75         u_int           rmx_recvpipe;   /* inbound delay-bandwidth product */
   76         u_int           rmx_sendpipe;   /* outbound delay-bandwidth product */
   77         u_int           rmx_ssthresh;   /* outbound gateway buffer limit */
   78         u_int           rmx_rtt;        /* estimated round trip time */
   79         u_int           rmx_rttvar;     /* estimated rtt variance */
   80         u_int           rmx_pad;
   81 };
   82 
   83 #ifdef _KERNEL
   84 /*
   85  * rmx_rtt and rmx_rttvar are stored as microseconds;
   86  * RTTTOPRHZ(rtt) converts to a value suitable for use
   87  * by a protocol slowtimo counter.
   88  */
   89 #define RTM_RTTUNIT     1000000 /* units for rtt, rttvar, as units per sec */
   90 #define RTTTOPRHZ(r)    ((r) / (RTM_RTTUNIT / PR_SLOWHZ))
   91 
   92 #include <sys/queue.h>
   93 #include <net/rtable.h>
   94 
   95 struct rttimer;
   96 
   97 /*
   98  * We distinguish between routes to hosts and routes to networks,
   99  * preferring the former if available.  For each route we infer
  100  * the interface to use from the gateway address supplied when
  101  * the route was entered.  Routes that forward packets through
  102  * gateways are marked so that the output routines know to address the
  103  * gateway rather than the ultimate destination.
  104  */
  105 
  106 struct rtentry {
  107         struct sockaddr *rt_dest;       /* destination */
  108         SRPL_ENTRY(rtentry) rt_next;    /* Next multipath entry to our dst. */
  109         struct sockaddr *rt_gateway;    /* value */
  110         struct ifaddr   *rt_ifa;        /* the answer: interface addr to use */
  111         caddr_t          rt_llinfo;     /* pointer to link level info cache or
  112                                            to an MPLS structure */
  113         union {
  114                 struct rtentry  *_nh;   /* implied entry for gatewayed routes */
  115                 unsigned int     _ref;  /* # gatewayed caching this route */
  116         } RT_gw;
  117 #define rt_gwroute       RT_gw._nh
  118 #define rt_cachecnt      RT_gw._ref
  119         struct rtentry  *rt_parent;     /* If cloned, parent of this route. */
  120         LIST_HEAD(, rttimer) rt_timer;  /* queue of timeouts for misc funcs */
  121         struct rt_kmetrics rt_rmx;      /* metrics used by rx'ing protocols */
  122         unsigned int     rt_ifidx;      /* the answer: interface to use */
  123         unsigned int     rt_flags;      /* up/down?, host/net */
  124         struct refcnt    rt_refcnt;     /* # held references */
  125         int              rt_plen;       /* prefix length */
  126         uint16_t         rt_labelid;    /* route label ID */
  127         uint8_t          rt_priority;   /* routing priority to use */
  128 };
  129 #define rt_use          rt_rmx.rmx_pksent
  130 #define rt_expire       rt_rmx.rmx_expire
  131 #define rt_locks        rt_rmx.rmx_locks
  132 #define rt_mtu          rt_rmx.rmx_mtu
  133 
  134 #endif /* _KERNEL */
  135 
  136 /* bitmask values for rtm_flags */
  137 #define RTF_UP          0x1             /* route usable */
  138 #define RTF_GATEWAY     0x2             /* destination is a gateway */
  139 #define RTF_HOST        0x4             /* host entry (net otherwise) */
  140 #define RTF_REJECT      0x8             /* host or net unreachable */
  141 #define RTF_DYNAMIC     0x10            /* created dynamically (by redirect) */
  142 #define RTF_MODIFIED    0x20            /* modified dynamically (by redirect) */
  143 #define RTF_DONE        0x40            /* message confirmed */
  144 #define RTF_CLONING     0x100           /* generate new routes on use */
  145 #define RTF_MULTICAST   0x200           /* route associated to a mcast addr. */
  146 #define RTF_LLINFO      0x400           /* generated by ARP or ND */
  147 #define RTF_STATIC      0x800           /* manually added */
  148 #define RTF_BLACKHOLE   0x1000          /* just discard pkts (during updates) */
  149 #define RTF_PROTO3      0x2000          /* protocol specific routing flag */
  150 #define RTF_PROTO2      0x4000          /* protocol specific routing flag */
  151 #define RTF_ANNOUNCE    RTF_PROTO2      /* announce L2 entry */
  152 #define RTF_PROTO1      0x8000          /* protocol specific routing flag */
  153 #define RTF_CLONED      0x10000         /* this is a cloned route */
  154 #define RTF_CACHED      0x20000         /* cached by a RTF_GATEWAY entry */
  155 #define RTF_MPATH       0x40000         /* multipath route or operation */
  156 #define RTF_MPLS        0x100000        /* MPLS additional infos */
  157 #define RTF_LOCAL       0x200000        /* route to a local address */
  158 #define RTF_BROADCAST   0x400000        /* route associated to a bcast addr. */
  159 #define RTF_CONNECTED   0x800000        /* interface route */
  160 #define RTF_BFD         0x1000000       /* Link state controlled by BFD */
  161 
  162 /* mask of RTF flags that are allowed to be modified by RTM_CHANGE */
  163 #define RTF_FMASK       \
  164     (RTF_LLINFO | RTF_PROTO1 | RTF_PROTO2 | RTF_PROTO3 | RTF_BLACKHOLE | \
  165      RTF_REJECT | RTF_STATIC | RTF_MPLS | RTF_BFD)
  166 
  167 /* Routing priorities used by the different routing protocols */
  168 #define RTP_NONE        0       /* unset priority use sane default */
  169 #define RTP_LOCAL       1       /* local address routes (must be the highest) */
  170 #define RTP_CONNECTED   4       /* directly connected routes */
  171 #define RTP_STATIC      8       /* static routes base priority */
  172 #define RTP_EIGRP       28      /* EIGRP routes */
  173 #define RTP_OSPF        32      /* OSPF routes */
  174 #define RTP_ISIS        36      /* IS-IS routes */
  175 #define RTP_RIP         40      /* RIP routes */
  176 #define RTP_BGP         48      /* BGP routes */
  177 #define RTP_DEFAULT     56      /* routes that have nothing set */
  178 #define RTP_PROPOSAL_STATIC     57
  179 #define RTP_PROPOSAL_DHCLIENT   58
  180 #define RTP_PROPOSAL_SLAAC      59
  181 #define RTP_PROPOSAL_UMB        60
  182 #define RTP_PROPOSAL_PPP        61
  183 #define RTP_PROPOSAL_SOLICIT    62      /* request reply of all RTM_PROPOSAL */
  184 #define RTP_MAX         63      /* maximum priority */
  185 #define RTP_ANY         64      /* any of the above */
  186 #define RTP_MASK        0x7f
  187 #define RTP_DOWN        0x80    /* route/link is down */
  188 
  189 /*
  190  * Routing statistics.
  191  */
  192 struct  rtstat {
  193         u_int32_t rts_badredirect;      /* bogus redirect calls */
  194         u_int32_t rts_dynamic;          /* routes created by redirects */
  195         u_int32_t rts_newgateway;       /* routes modified by redirects */
  196         u_int32_t rts_unreach;          /* lookups which failed */
  197         u_int32_t rts_wildcard;         /* lookups satisfied by a wildcard */
  198 };
  199 
  200 /*
  201  * Routing Table Info.
  202  */
  203 struct rt_tableinfo {
  204         u_short rti_tableid;    /* routing table id */
  205         u_short rti_domainid;   /* routing domain id */
  206 };
  207 
  208 /*
  209  * Structures for routing messages.
  210  */
  211 struct rt_msghdr {
  212         u_short rtm_msglen;     /* to skip over non-understood messages */
  213         u_char  rtm_version;    /* future binary compatibility */
  214         u_char  rtm_type;       /* message type */
  215         u_short rtm_hdrlen;     /* sizeof(rt_msghdr) to skip over the header */
  216         u_short rtm_index;      /* index for associated ifp */
  217         u_short rtm_tableid;    /* routing table id */
  218         u_char  rtm_priority;   /* routing priority */
  219         u_char  rtm_mpls;       /* MPLS additional infos */
  220         int     rtm_addrs;      /* bitmask identifying sockaddrs in msg */
  221         int     rtm_flags;      /* flags, incl. kern & message, e.g. DONE */
  222         int     rtm_fmask;      /* bitmask used in RTM_CHANGE message */
  223         pid_t   rtm_pid;        /* identify sender */
  224         int     rtm_seq;        /* for sender to identify action */
  225         int     rtm_errno;      /* why failed */
  226         u_int   rtm_inits;      /* which metrics we are initializing */
  227         struct  rt_metrics rtm_rmx; /* metrics themselves */
  228 };
  229 /* overload no longer used field */
  230 #define rtm_use rtm_rmx.rmx_pksent
  231 
  232 #define RTM_VERSION     5       /* Up the ante and ignore older versions */
  233 
  234 #define RTM_MAXSIZE     2048    /* Maximum size of an accepted route msg */
  235 
  236 /* values for rtm_type */
  237 #define RTM_ADD         0x1     /* Add Route */
  238 #define RTM_DELETE      0x2     /* Delete Route */
  239 #define RTM_CHANGE      0x3     /* Change Metrics or flags */
  240 #define RTM_GET         0x4     /* Report Metrics */
  241 #define RTM_LOSING      0x5     /* Kernel Suspects Partitioning */
  242 #define RTM_REDIRECT    0x6     /* Told to use different route */
  243 #define RTM_MISS        0x7     /* Lookup failed on this address */
  244 #define RTM_RESOLVE     0xb     /* req to resolve dst to LL addr */
  245 #define RTM_NEWADDR     0xc     /* address being added to iface */
  246 #define RTM_DELADDR     0xd     /* address being removed from iface */
  247 #define RTM_IFINFO      0xe     /* iface going up/down etc. */
  248 #define RTM_IFANNOUNCE  0xf     /* iface arrival/departure */
  249 #define RTM_DESYNC      0x10    /* route socket buffer overflow */
  250 #define RTM_INVALIDATE  0x11    /* Invalidate cache of L2 route */
  251 #define RTM_BFD         0x12    /* bidirectional forwarding detection */
  252 #define RTM_PROPOSAL    0x13    /* proposal for resolvd(8) */
  253 #define RTM_CHGADDRATTR 0x14    /* address attribute change */
  254 #define RTM_80211INFO   0x15    /* 80211 iface change */
  255 #define RTM_SOURCE      0x16    /* set source address */
  256 
  257 #define RTV_MTU         0x1     /* init or lock _mtu */
  258 #define RTV_HOPCOUNT    0x2     /* init or lock _hopcount */
  259 #define RTV_EXPIRE      0x4     /* init or lock _expire */
  260 #define RTV_RPIPE       0x8     /* init or lock _recvpipe */
  261 #define RTV_SPIPE       0x10    /* init or lock _sendpipe */
  262 #define RTV_SSTHRESH    0x20    /* init or lock _ssthresh */
  263 #define RTV_RTT         0x40    /* init or lock _rtt */
  264 #define RTV_RTTVAR      0x80    /* init or lock _rttvar */
  265 
  266 /*
  267  * Bitmask values for rtm_addrs.
  268  */
  269 #define RTA_DST         0x1     /* destination sockaddr present */
  270 #define RTA_GATEWAY     0x2     /* gateway sockaddr present */
  271 #define RTA_NETMASK     0x4     /* netmask sockaddr present */
  272 #define RTA_GENMASK     0x8     /* cloning mask sockaddr present */
  273 #define RTA_IFP         0x10    /* interface name sockaddr present */
  274 #define RTA_IFA         0x20    /* interface addr sockaddr present */
  275 #define RTA_AUTHOR      0x40    /* sockaddr for author of redirect */
  276 #define RTA_BRD         0x80    /* for NEWADDR, broadcast or p-p dest addr */
  277 #define RTA_SRC         0x100   /* source sockaddr present */
  278 #define RTA_SRCMASK     0x200   /* source netmask present */
  279 #define RTA_LABEL       0x400   /* route label present */
  280 #define RTA_BFD         0x800   /* bfd present */
  281 #define RTA_DNS         0x1000  /* DNS Servers sockaddr present */
  282 #define RTA_STATIC      0x2000  /* RFC 3442 encoded static routes present */
  283 #define RTA_SEARCH      0x4000  /* RFC 3397 encoded search path present */
  284 
  285 /*
  286  * Index offsets for sockaddr array for alternate internal encoding.
  287  */
  288 #define RTAX_DST        0       /* destination sockaddr present */
  289 #define RTAX_GATEWAY    1       /* gateway sockaddr present */
  290 #define RTAX_NETMASK    2       /* netmask sockaddr present */
  291 #define RTAX_GENMASK    3       /* cloning mask sockaddr present */
  292 #define RTAX_IFP        4       /* interface name sockaddr present */
  293 #define RTAX_IFA        5       /* interface addr sockaddr present */
  294 #define RTAX_AUTHOR     6       /* sockaddr for author of redirect */
  295 #define RTAX_BRD        7       /* for NEWADDR, broadcast or p-p dest addr */
  296 #define RTAX_SRC        8       /* source sockaddr present */
  297 #define RTAX_SRCMASK    9       /* source netmask present */
  298 #define RTAX_LABEL      10      /* route label present */
  299 #define RTAX_BFD        11      /* bfd present */
  300 #define RTAX_DNS        12      /* DNS Server(s) sockaddr present */
  301 #define RTAX_STATIC     13      /* RFC 3442 encoded static routes present */
  302 #define RTAX_SEARCH     14      /* RFC 3397 encoded search path present */
  303 #define RTAX_MAX        15      /* size of array to allocate */
  304 
  305 /*
  306  * setsockopt defines used for the filtering.
  307  */
  308 #define ROUTE_MSGFILTER 1       /* bitmask to specify which types should be
  309                                    sent to the client. */
  310 #define ROUTE_TABLEFILTER 2     /* change routing table the socket is listening
  311                                    on, RTABLE_ANY listens on all tables. */
  312 #define ROUTE_PRIOFILTER 3      /* only pass updates with a priority higher or
  313                                    equal (actual value lower) to the specified
  314                                    priority. */
  315 #define ROUTE_FLAGFILTER 4      /* do not pass updates for routes with flags
  316                                    in this bitmask. */
  317 
  318 #define ROUTE_FILTER(m) (1 << (m))
  319 #define RTABLE_ANY      0xffffffff
  320 
  321 #define RTLABEL_LEN     32
  322 
  323 struct sockaddr_rtlabel {
  324         u_int8_t        sr_len;                 /* total length */
  325         sa_family_t     sr_family;              /* address family */
  326         char            sr_label[RTLABEL_LEN];
  327 };
  328 
  329 #define RTDNS_LEN       128
  330 
  331 struct sockaddr_rtdns {
  332         u_int8_t        sr_len;                 /* total length */
  333         sa_family_t     sr_family;              /* address family */
  334         char            sr_dns[RTDNS_LEN];
  335 };
  336 
  337 #ifdef _KERNEL
  338 
  339 static inline struct sockaddr *
  340 srtdnstosa(struct sockaddr_rtdns *sdns)
  341 {
  342         return ((struct sockaddr *)(sdns));
  343 }
  344 
  345 #endif
  346 
  347 #define RTSTATIC_LEN    128
  348 
  349 struct sockaddr_rtstatic {
  350         u_int8_t        sr_len;                 /* total length */
  351         sa_family_t     sr_family;              /* address family */
  352         char            sr_static[RTSTATIC_LEN];
  353 };
  354 
  355 #define RTSEARCH_LEN    128
  356 
  357 struct sockaddr_rtsearch {
  358         u_int8_t        sr_len;                 /* total length */
  359         sa_family_t     sr_family;              /* address family */
  360         char            sr_search[RTSEARCH_LEN];
  361 };
  362 
  363 /*
  364  * A route consists of a destination address and a reference
  365  * to a routing entry.  These are often held by protocols
  366  * in their control blocks, e.g. inpcb.
  367  */
  368 struct route {
  369         struct  rtentry *ro_rt;
  370         u_long           ro_tableid;    /* u_long because of alignment */
  371         struct  sockaddr ro_dst;
  372 };
  373 
  374 struct rt_addrinfo {
  375         int     rti_addrs;
  376         struct  sockaddr *rti_info[RTAX_MAX];
  377         int     rti_flags;
  378         struct  ifaddr *rti_ifa;
  379         struct  rt_msghdr *rti_rtm;
  380         u_char  rti_mpls;
  381 };
  382 
  383 #ifdef _KERNEL
  384 
  385 #include <sys/percpu.h>
  386 
  387 enum rtstat_counters {
  388         rts_badredirect,        /* bogus redirect calls */
  389         rts_dynamic,            /* routes created by redirects */
  390         rts_newgateway,         /* routes modified by redirects */
  391         rts_unreach,            /* lookups which failed */
  392         rts_wildcard,           /* lookups satisfied by a wildcard */
  393 
  394         rts_ncounters
  395 };
  396 
  397 static inline void
  398 rtstat_inc(enum rtstat_counters c)
  399 {
  400         extern struct cpumem *rtcounters;
  401 
  402         counters_inc(rtcounters, c);
  403 }
  404 
  405 /*
  406  * This structure, and the prototypes for the rt_timer_{init,remove_all,
  407  * add,timer} functions all used with the kind permission of BSDI.
  408  * These allow functions to be called for routes at specific times.
  409  */
  410 struct rttimer_queue {
  411         TAILQ_HEAD(, rttimer)           rtq_head;       /* [T] */
  412         LIST_ENTRY(rttimer_queue)       rtq_link;       /* [T] */
  413         void                            (*rtq_func)     /* [I] callback */
  414                                             (struct rtentry *, u_int);
  415         unsigned long                   rtq_count;      /* [T] */
  416         int                             rtq_timeout;    /* [T] */
  417 };
  418 
  419 const char      *rtlabel_id2name(u_int16_t);
  420 u_int16_t        rtlabel_name2id(char *);
  421 struct sockaddr *rtlabel_id2sa(u_int16_t, struct sockaddr_rtlabel *);
  422 void             rtlabel_unref(u_int16_t);
  423 
  424 /*
  425  * Values for additional argument to rtalloc()
  426  */
  427 #define RT_RESOLVE      1
  428 
  429 extern struct rtstat rtstat;
  430 
  431 struct mbuf;
  432 struct socket;
  433 struct ifnet;
  434 struct sockaddr_in6;
  435 struct if_ieee80211_data;
  436 struct bfd_config;
  437 
  438 void     route_init(void);
  439 void     rtm_ifchg(struct ifnet *);
  440 void     rtm_ifannounce(struct ifnet *, int);
  441 void     rtm_bfd(struct bfd_config *);
  442 void     rtm_80211info(struct ifnet *, struct if_ieee80211_data *);
  443 void     rt_maskedcopy(struct sockaddr *,
  444             struct sockaddr *, struct sockaddr *);
  445 struct sockaddr *rt_plen2mask(struct rtentry *, struct sockaddr_in6 *);
  446 void     rtm_send(struct rtentry *, int, int, unsigned int);
  447 void     rtm_addr(int, struct ifaddr *);
  448 void     rtm_miss(int, struct rt_addrinfo *, int, uint8_t, u_int, int, u_int);
  449 void     rtm_proposal(struct ifnet *, struct rt_addrinfo *, int, uint8_t);
  450 int      rt_setgate(struct rtentry *, struct sockaddr *, u_int);
  451 struct rtentry *rt_getll(struct rtentry *);
  452 
  453 void            rt_timer_init(void);
  454 int             rt_timer_add(struct rtentry *,
  455                     struct rttimer_queue *, u_int);
  456 void            rt_timer_remove_all(struct rtentry *);
  457 time_t          rt_timer_get_expire(const struct rtentry *);
  458 void            rt_timer_queue_init(struct rttimer_queue *, int,
  459                     void(*)(struct rtentry *, u_int));
  460 void            rt_timer_queue_change(struct rttimer_queue *, int);
  461 void            rt_timer_queue_flush(struct rttimer_queue *);
  462 unsigned long   rt_timer_queue_count(struct rttimer_queue *);
  463 void            rt_timer_timer(void *);
  464 
  465 int      rt_mpls_set(struct rtentry *, struct sockaddr *, uint8_t);
  466 void     rt_mpls_clear(struct rtentry *);
  467 
  468 int      rtisvalid(struct rtentry *);
  469 int      rt_hash(struct rtentry *, struct sockaddr *, uint32_t *);
  470 struct   rtentry *rtalloc_mpath(struct sockaddr *, uint32_t *, u_int);
  471 struct   rtentry *rtalloc(struct sockaddr *, int, unsigned int);
  472 void     rtref(struct rtentry *);
  473 void     rtfree(struct rtentry *);
  474 
  475 int      rt_ifa_add(struct ifaddr *, int, struct sockaddr *, unsigned int);
  476 int      rt_ifa_del(struct ifaddr *, int, struct sockaddr *, unsigned int);
  477 void     rt_ifa_purge(struct ifaddr *);
  478 int      rt_ifa_addlocal(struct ifaddr *);
  479 int      rt_ifa_dellocal(struct ifaddr *);
  480 void     rtredirect(struct sockaddr *, struct sockaddr *, struct sockaddr *,
  481             struct rtentry **, unsigned int);
  482 int      rtrequest(int, struct rt_addrinfo *, u_int8_t, struct rtentry **,
  483             u_int);
  484 int      rtrequest_delete(struct rt_addrinfo *, u_int8_t, struct ifnet *,
  485             struct rtentry **, u_int);
  486 int      rt_if_track(struct ifnet *);
  487 int      rt_if_linkstate_change(struct rtentry *, void *, u_int);
  488 int      rtdeletemsg(struct rtentry *, struct ifnet *, u_int);
  489 #endif /* _KERNEL */
  490 
  491 #endif /* _NET_ROUTE_H_ */

Cache object: 192106d3ac428acc975a9fa17dacb7b9


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]


This page is part of the FreeBSD/Linux Linux Kernel Cross-Reference, and was automatically generated using a modified version of the LXR engine.