cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

af_netlink.h (1892B)


      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
     23struct 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
     52static inline struct netlink_sock *nlk_sk(struct sock *sk)
     53{
     54	return container_of(sk, struct netlink_sock, sk);
     55}
     56
     57struct 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
     71extern struct netlink_table *nl_table;
     72extern rwlock_t nl_table_lock;
     73
     74#endif