root/include/linux/mroute6.h

/* [<][>][^][v][top][bottom][index][help] */

INCLUDED FROM


DEFINITIONS

This source file includes following definitions.
  1. ip6_mroute_opt
  2. ip6_mroute_opt
  3. ip6_mroute_setsockopt
  4. ip6_mroute_getsockopt
  5. ip6mr_ioctl
  6. ip6_mr_init
  7. ip6_mr_cleanup
  8. ip6mr_rule_default
  9. mroute6_is_socket
  10. ip6mr_sk_done

   1 /* SPDX-License-Identifier: GPL-2.0 */
   2 #ifndef __LINUX_MROUTE6_H
   3 #define __LINUX_MROUTE6_H
   4 
   5 
   6 #include <linux/pim.h>
   7 #include <linux/skbuff.h>       /* for struct sk_buff_head */
   8 #include <net/net_namespace.h>
   9 #include <uapi/linux/mroute6.h>
  10 #include <linux/mroute_base.h>
  11 #include <net/fib_rules.h>
  12 
  13 #ifdef CONFIG_IPV6_MROUTE
  14 static inline int ip6_mroute_opt(int opt)
  15 {
  16         return (opt >= MRT6_BASE) && (opt <= MRT6_MAX);
  17 }
  18 #else
  19 static inline int ip6_mroute_opt(int opt)
  20 {
  21         return 0;
  22 }
  23 #endif
  24 
  25 struct sock;
  26 
  27 #ifdef CONFIG_IPV6_MROUTE
  28 extern int ip6_mroute_setsockopt(struct sock *, int, char __user *, unsigned int);
  29 extern int ip6_mroute_getsockopt(struct sock *, int, char __user *, int __user *);
  30 extern int ip6_mr_input(struct sk_buff *skb);
  31 extern int ip6mr_ioctl(struct sock *sk, int cmd, void __user *arg);
  32 extern int ip6mr_compat_ioctl(struct sock *sk, unsigned int cmd, void __user *arg);
  33 extern int ip6_mr_init(void);
  34 extern void ip6_mr_cleanup(void);
  35 #else
  36 static inline
  37 int ip6_mroute_setsockopt(struct sock *sock,
  38                           int optname, char __user *optval, unsigned int optlen)
  39 {
  40         return -ENOPROTOOPT;
  41 }
  42 
  43 static inline
  44 int ip6_mroute_getsockopt(struct sock *sock,
  45                           int optname, char __user *optval, int __user *optlen)
  46 {
  47         return -ENOPROTOOPT;
  48 }
  49 
  50 static inline
  51 int ip6mr_ioctl(struct sock *sk, int cmd, void __user *arg)
  52 {
  53         return -ENOIOCTLCMD;
  54 }
  55 
  56 static inline int ip6_mr_init(void)
  57 {
  58         return 0;
  59 }
  60 
  61 static inline void ip6_mr_cleanup(void)
  62 {
  63         return;
  64 }
  65 #endif
  66 
  67 #ifdef CONFIG_IPV6_MROUTE_MULTIPLE_TABLES
  68 bool ip6mr_rule_default(const struct fib_rule *rule);
  69 #else
  70 static inline bool ip6mr_rule_default(const struct fib_rule *rule)
  71 {
  72         return true;
  73 }
  74 #endif
  75 
  76 #define VIFF_STATIC 0x8000
  77 
  78 struct mfc6_cache_cmp_arg {
  79         struct in6_addr mf6c_mcastgrp;
  80         struct in6_addr mf6c_origin;
  81 };
  82 
  83 struct mfc6_cache {
  84         struct mr_mfc _c;
  85         union {
  86                 struct {
  87                         struct in6_addr mf6c_mcastgrp;
  88                         struct in6_addr mf6c_origin;
  89                 };
  90                 struct mfc6_cache_cmp_arg cmparg;
  91         };
  92 };
  93 
  94 #define MFC_ASSERT_THRESH (3*HZ)                /* Maximal freq. of asserts */
  95 
  96 struct rtmsg;
  97 extern int ip6mr_get_route(struct net *net, struct sk_buff *skb,
  98                            struct rtmsg *rtm, u32 portid);
  99 
 100 #ifdef CONFIG_IPV6_MROUTE
 101 bool mroute6_is_socket(struct net *net, struct sk_buff *skb);
 102 extern int ip6mr_sk_done(struct sock *sk);
 103 #else
 104 static inline bool mroute6_is_socket(struct net *net, struct sk_buff *skb)
 105 {
 106         return false;
 107 }
 108 static inline int ip6mr_sk_done(struct sock *sk)
 109 {
 110         return 0;
 111 }
 112 #endif
 113 #endif

/* [<][>][^][v][top][bottom][index][help] */