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

raw.h (2127B)


      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
     20extern struct proto raw_prot;
     21
     22extern struct raw_hashinfo raw_v4_hashinfo;
     23struct sock *__raw_v4_lookup(struct net *net, struct sock *sk,
     24			     unsigned short num, __be32 raddr,
     25			     __be32 laddr, int dif, int sdif);
     26
     27int raw_abort(struct sock *sk, int err);
     28void raw_icmp_error(struct sk_buff *, int, u32);
     29int raw_local_deliver(struct sk_buff *, int);
     30
     31int raw_rcv(struct sock *, struct sk_buff *);
     32
     33#define RAW_HTABLE_SIZE	MAX_INET_PROTOS
     34
     35struct raw_hashinfo {
     36	rwlock_t lock;
     37	struct hlist_head ht[RAW_HTABLE_SIZE];
     38};
     39
     40#ifdef CONFIG_PROC_FS
     41int raw_proc_init(void);
     42void raw_proc_exit(void);
     43
     44struct raw_iter_state {
     45	struct seq_net_private p;
     46	int bucket;
     47};
     48
     49static inline struct raw_iter_state *raw_seq_private(struct seq_file *seq)
     50{
     51	return seq->private;
     52}
     53void *raw_seq_start(struct seq_file *seq, loff_t *pos);
     54void *raw_seq_next(struct seq_file *seq, void *v, loff_t *pos);
     55void raw_seq_stop(struct seq_file *seq, void *v);
     56#endif
     57
     58int raw_hash_sk(struct sock *sk);
     59void raw_unhash_sk(struct sock *sk);
     60void raw_init(void);
     61
     62struct 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
     69static inline struct raw_sock *raw_sk(const struct sock *sk)
     70{
     71	return (struct raw_sock *)sk;
     72}
     73
     74static 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	return inet_bound_dev_eq(true, bound_dev_if, dif, sdif);
     82#endif
     83}
     84
     85#endif	/* _RAW_H */