LCOV - code coverage report
Current view: top level - include/net - raw.h (source / functions) Hit Total Coverage
Test: landlock.info Lines: 2 6 33.3 %
Date: 2021-04-22 12:43:58 Functions: 0 0 -

          Line data    Source code
       1             : /* SPDX-License-Identifier: GPL-2.0-or-later */
       2             : /*
       3             :  * INET         An implementation of the TCP/IP protocol suite for the LINUX
       4             :  *              operating system.  INET is implemented using the  BSD Socket
       5             :  *              interface as the means of communication with the user level.
       6             :  *
       7             :  *              Definitions for the RAW-IP module.
       8             :  *
       9             :  * Version:     @(#)raw.h       1.0.2   05/07/93
      10             :  *
      11             :  * Author:      Fred N. van Kempen, <waltje@uWalt.NL.Mugnet.ORG>
      12             :  */
      13             : #ifndef _RAW_H
      14             : #define _RAW_H
      15             : 
      16             : #include <net/inet_sock.h>
      17             : #include <net/protocol.h>
      18             : #include <linux/icmp.h>
      19             : 
      20             : extern struct proto raw_prot;
      21             : 
      22             : extern struct raw_hashinfo raw_v4_hashinfo;
      23             : struct sock *__raw_v4_lookup(struct net *net, struct sock *sk,
      24             :                              unsigned short num, __be32 raddr,
      25             :                              __be32 laddr, int dif, int sdif);
      26             : 
      27             : int raw_abort(struct sock *sk, int err);
      28             : void raw_icmp_error(struct sk_buff *, int, u32);
      29             : int raw_local_deliver(struct sk_buff *, int);
      30             : 
      31             : int raw_rcv(struct sock *, struct sk_buff *);
      32             : 
      33             : #define RAW_HTABLE_SIZE MAX_INET_PROTOS
      34             : 
      35             : struct raw_hashinfo {
      36             :         rwlock_t lock;
      37             :         struct hlist_head ht[RAW_HTABLE_SIZE];
      38             : };
      39             : 
      40             : #ifdef CONFIG_PROC_FS
      41             : int raw_proc_init(void);
      42             : void raw_proc_exit(void);
      43             : 
      44             : struct raw_iter_state {
      45             :         struct seq_net_private p;
      46             :         int bucket;
      47             : };
      48             : 
      49           0 : static inline struct raw_iter_state *raw_seq_private(struct seq_file *seq)
      50             : {
      51           0 :         return seq->private;
      52             : }
      53             : void *raw_seq_start(struct seq_file *seq, loff_t *pos);
      54             : void *raw_seq_next(struct seq_file *seq, void *v, loff_t *pos);
      55             : void raw_seq_stop(struct seq_file *seq, void *v);
      56             : #endif
      57             : 
      58             : int raw_hash_sk(struct sock *sk);
      59             : void raw_unhash_sk(struct sock *sk);
      60             : void raw_init(void);
      61             : 
      62             : struct raw_sock {
      63             :         /* inet_sock has to be the first member */
      64             :         struct inet_sock   inet;
      65             :         struct icmp_filter filter;
      66             :         u32                ipmr_table;
      67             : };
      68             : 
      69           8 : static inline struct raw_sock *raw_sk(const struct sock *sk)
      70             : {
      71           8 :         return (struct raw_sock *)sk;
      72             : }
      73             : 
      74           0 : static inline bool raw_sk_bound_dev_eq(struct net *net, int bound_dev_if,
      75             :                                        int dif, int sdif)
      76             : {
      77             : #if IS_ENABLED(CONFIG_NET_L3_MASTER_DEV)
      78             :         return inet_bound_dev_eq(!!net->ipv4.sysctl_raw_l3mdev_accept,
      79             :                                  bound_dev_if, dif, sdif);
      80             : #else
      81           0 :         return inet_bound_dev_eq(true, bound_dev_if, dif, sdif);
      82             : #endif
      83             : }
      84             : 
      85             : #endif  /* _RAW_H */

Generated by: LCOV version 1.14