Blame view

include/net/seg6_hmac.h 1.44 KB
2874c5fd2   Thomas Gleixner   treewide: Replace...
1
  /* SPDX-License-Identifier: GPL-2.0-or-later */
bf355b8d2   David Lebrun   ipv6: sr: add cor...
2
3
4
5
6
  /*
   *  SR-IPv6 implementation
   *
   *  Author:
   *  David Lebrun <david.lebrun@uclouvain.be>
bf355b8d2   David Lebrun   ipv6: sr: add cor...
7
8
9
10
11
12
13
14
15
16
17
18
19
   */
  
  #ifndef _NET_SEG6_HMAC_H
  #define _NET_SEG6_HMAC_H
  
  #include <net/flow.h>
  #include <net/ip6_fib.h>
  #include <net/sock.h>
  #include <linux/ip.h>
  #include <linux/ipv6.h>
  #include <linux/route.h>
  #include <net/seg6.h>
  #include <linux/seg6_hmac.h>
0eb71a9da   NeilBrown   rhashtable: split...
20
  #include <linux/rhashtable-types.h>
bf355b8d2   David Lebrun   ipv6: sr: add cor...
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
  
  #define SEG6_HMAC_MAX_DIGESTSIZE	160
  #define SEG6_HMAC_RING_SIZE		256
  
  struct seg6_hmac_info {
  	struct rhash_head node;
  	struct rcu_head rcu;
  
  	u32 hmackeyid;
  	char secret[SEG6_HMAC_SECRET_LEN];
  	u8 slen;
  	u8 alg_id;
  };
  
  struct seg6_hmac_algo {
  	u8 alg_id;
  	char name[64];
  	struct crypto_shash * __percpu *tfms;
  	struct shash_desc * __percpu *shashs;
  };
  
  extern int seg6_hmac_compute(struct seg6_hmac_info *hinfo,
  			     struct ipv6_sr_hdr *hdr, struct in6_addr *saddr,
  			     u8 *output);
  extern struct seg6_hmac_info *seg6_hmac_info_lookup(struct net *net, u32 key);
  extern int seg6_hmac_info_add(struct net *net, u32 key,
  			      struct seg6_hmac_info *hinfo);
  extern int seg6_hmac_info_del(struct net *net, u32 key);
  extern int seg6_push_hmac(struct net *net, struct in6_addr *saddr,
  			  struct ipv6_sr_hdr *srh);
  extern bool seg6_hmac_validate_skb(struct sk_buff *skb);
  extern int seg6_hmac_init(void);
  extern void seg6_hmac_exit(void);
  extern int seg6_hmac_net_init(struct net *net);
  extern void seg6_hmac_net_exit(struct net *net);
  
  #endif