LCOV - code coverage report
Current view: top level - net/ipv4 - fib_lookup.h (source / functions) Hit Total Coverage
Test: landlock.info Lines: 3 7 42.9 %
Date: 2021-04-22 12:43:58 Functions: 0 1 0.0 %

          Line data    Source code
       1             : /* SPDX-License-Identifier: GPL-2.0 */
       2             : #ifndef _FIB_LOOKUP_H
       3             : #define _FIB_LOOKUP_H
       4             : 
       5             : #include <linux/types.h>
       6             : #include <linux/list.h>
       7             : #include <net/ip_fib.h>
       8             : #include <net/nexthop.h>
       9             : 
      10             : struct fib_alias {
      11             :         struct hlist_node       fa_list;
      12             :         struct fib_info         *fa_info;
      13             :         u8                      fa_tos;
      14             :         u8                      fa_type;
      15             :         u8                      fa_state;
      16             :         u8                      fa_slen;
      17             :         u32                     tb_id;
      18             :         s16                     fa_default;
      19             :         u8                      offload:1,
      20             :                                 trap:1,
      21             :                                 offload_failed:1,
      22             :                                 unused:5;
      23             :         struct rcu_head         rcu;
      24             : };
      25             : 
      26             : #define FA_S_ACCESSED   0x01
      27             : 
      28             : /* Dont write on fa_state unless needed, to keep it shared on all cpus */
      29          67 : static inline void fib_alias_accessed(struct fib_alias *fa)
      30             : {
      31          67 :         if (!(fa->fa_state & FA_S_ACCESSED))
      32           3 :                 fa->fa_state |= FA_S_ACCESSED;
      33             : }
      34             : 
      35             : /* Exported by fib_semantics.c */
      36             : void fib_release_info(struct fib_info *);
      37             : struct fib_info *fib_create_info(struct fib_config *cfg,
      38             :                                  struct netlink_ext_ack *extack);
      39             : int fib_nh_match(struct net *net, struct fib_config *cfg, struct fib_info *fi,
      40             :                  struct netlink_ext_ack *extack);
      41             : bool fib_metrics_match(struct fib_config *cfg, struct fib_info *fi);
      42             : int fib_dump_info(struct sk_buff *skb, u32 pid, u32 seq, int event,
      43             :                   const struct fib_rt_info *fri, unsigned int flags);
      44             : void rtmsg_fib(int event, __be32 key, struct fib_alias *fa, int dst_len,
      45             :                u32 tb_id, const struct nl_info *info, unsigned int nlm_flags);
      46             : size_t fib_nlmsg_size(struct fib_info *fi);
      47             : 
      48           0 : static inline void fib_result_assign(struct fib_result *res,
      49             :                                      struct fib_info *fi)
      50             : {
      51             :         /* we used to play games with refcounts, but we now use RCU */
      52           0 :         res->fi = fi;
      53           0 :         res->nhc = fib_info_nhc(fi, 0);
      54           0 : }
      55             : 
      56             : struct fib_prop {
      57             :         int     error;
      58             :         u8      scope;
      59             : };
      60             : 
      61             : extern const struct fib_prop fib_props[RTN_MAX + 1];
      62             : 
      63             : #endif /* _FIB_LOOKUP_H */

Generated by: LCOV version 1.14