LCOV - code coverage report
Current view: top level - net - route.h (source / functions) Hit Total Coverage
Test: 6.4 Lines: 0 3 0.0 %
Date: 2018-10-19 03:25:38 Functions: 0 1 0.0 %
Legend: Lines: hit not hit

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

Generated by: LCOV version 1.13