LCOV - code coverage report
Current view: top level - net/netlink - af_netlink.h (source / functions) Hit Total Coverage
Test: combined.info Lines: 2 2 100.0 %
Date: 2022-04-01 13:59:58 Functions: 0 0 -
Branches: 31 64 48.4 %

           Branch data     Line data    Source code
       1                 :            : /* SPDX-License-Identifier: GPL-2.0 */
       2                 :            : #ifndef _AF_NETLINK_H
       3                 :            : #define _AF_NETLINK_H
       4                 :            : 
       5                 :            : #include <linux/rhashtable.h>
       6                 :            : #include <linux/atomic.h>
       7                 :            : #include <linux/workqueue.h>
       8                 :            : #include <net/sock.h>
       9                 :            : 
      10                 :            : /* flags */
      11                 :            : #define NETLINK_F_KERNEL_SOCKET         0x1
      12                 :            : #define NETLINK_F_RECV_PKTINFO          0x2
      13                 :            : #define NETLINK_F_BROADCAST_SEND_ERROR  0x4
      14                 :            : #define NETLINK_F_RECV_NO_ENOBUFS       0x8
      15                 :            : #define NETLINK_F_LISTEN_ALL_NSID       0x10
      16                 :            : #define NETLINK_F_CAP_ACK               0x20
      17                 :            : #define NETLINK_F_EXT_ACK               0x40
      18                 :            : #define NETLINK_F_STRICT_CHK            0x80
      19                 :            : 
      20                 :            : #define NLGRPSZ(x)      (ALIGN(x, sizeof(unsigned long) * 8) / 8)
      21                 :            : #define NLGRPLONGS(x)   (NLGRPSZ(x)/sizeof(unsigned long))
      22                 :            : 
      23                 :            : struct netlink_sock {
      24                 :            :         /* struct sock has to be the first member of netlink_sock */
      25                 :            :         struct sock             sk;
      26                 :            :         u32                     portid;
      27                 :            :         u32                     dst_portid;
      28                 :            :         u32                     dst_group;
      29                 :            :         u32                     flags;
      30                 :            :         u32                     subscriptions;
      31                 :            :         u32                     ngroups;
      32                 :            :         unsigned long           *groups;
      33                 :            :         unsigned long           state;
      34                 :            :         size_t                  max_recvmsg_len;
      35                 :            :         wait_queue_head_t       wait;
      36                 :            :         bool                    bound;
      37                 :            :         bool                    cb_running;
      38                 :            :         int                     dump_done_errno;
      39                 :            :         struct netlink_callback cb;
      40                 :            :         struct mutex            *cb_mutex;
      41                 :            :         struct mutex            cb_def_mutex;
      42                 :            :         void                    (*netlink_rcv)(struct sk_buff *skb);
      43                 :            :         int                     (*netlink_bind)(struct net *net, int group);
      44                 :            :         void                    (*netlink_unbind)(struct net *net, int group);
      45                 :            :         struct module           *module;
      46                 :            : 
      47                 :            :         struct rhash_head       node;
      48                 :            :         struct rcu_head         rcu;
      49                 :            :         struct work_struct      work;
      50                 :            : };
      51                 :            : 
      52                 :    1033140 : static inline struct netlink_sock *nlk_sk(struct sock *sk)
      53                 :            : {
      54   [ +  +  -  +  :     983124 :         return container_of(sk, struct netlink_sock, sk);
          +  -  +  -  +  
          -  +  -  -  -  
          +  -  -  +  +  
          +  +  -  +  -  
          +  -  -  -  -  
          +  -  -  -  +  
          -  -  +  -  -  
          -  -  +  -  +  
          -  +  +  +  -  
          +  +  +  -  +  
          +  -  -  +  -  
             +  +  +  -  
                      - ]
      55                 :            : }
      56                 :            : 
      57                 :            : struct netlink_table {
      58                 :            :         struct rhashtable       hash;
      59                 :            :         struct hlist_head       mc_list;
      60                 :            :         struct listeners __rcu  *listeners;
      61                 :            :         unsigned int            flags;
      62                 :            :         unsigned int            groups;
      63                 :            :         struct mutex            *cb_mutex;
      64                 :            :         struct module           *module;
      65                 :            :         int                     (*bind)(struct net *net, int group);
      66                 :            :         void                    (*unbind)(struct net *net, int group);
      67                 :            :         bool                    (*compare)(struct net *net, struct sock *sock);
      68                 :            :         int                     registered;
      69                 :            : };
      70                 :            : 
      71                 :            : extern struct netlink_table *nl_table;
      72                 :            : extern rwlock_t nl_table_lock;
      73                 :            : 
      74                 :            : #endif

Generated by: LCOV version 1.14