summaryrefslogtreecommitdiffstats
path: root/include/net/xfrm.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/net/xfrm.h')
-rw-r--r--include/net/xfrm.h15
1 files changed, 15 insertions, 0 deletions
diff --git a/include/net/xfrm.h b/include/net/xfrm.h
index af13599b60a0..6304ec394c4a 100644
--- a/include/net/xfrm.h
+++ b/include/net/xfrm.h
@@ -1374,6 +1374,16 @@ struct xfrm4_protocol {
1374 int priority; 1374 int priority;
1375}; 1375};
1376 1376
1377struct xfrm6_protocol {
1378 int (*handler)(struct sk_buff *skb);
1379 int (*cb_handler)(struct sk_buff *skb, int err);
1380 int (*err_handler)(struct sk_buff *skb, struct inet6_skb_parm *opt,
1381 u8 type, u8 code, int offset, __be32 info);
1382
1383 struct xfrm6_protocol __rcu *next;
1384 int priority;
1385};
1386
1377/* XFRM tunnel handlers. */ 1387/* XFRM tunnel handlers. */
1378struct xfrm_tunnel { 1388struct xfrm_tunnel {
1379 int (*handler)(struct sk_buff *skb); 1389 int (*handler)(struct sk_buff *skb);
@@ -1408,6 +1418,8 @@ int xfrm6_init(void);
1408void xfrm6_fini(void); 1418void xfrm6_fini(void);
1409int xfrm6_state_init(void); 1419int xfrm6_state_init(void);
1410void xfrm6_state_fini(void); 1420void xfrm6_state_fini(void);
1421int xfrm6_protocol_init(void);
1422void xfrm6_protocol_fini(void);
1411#else 1423#else
1412static inline int xfrm6_init(void) 1424static inline int xfrm6_init(void)
1413{ 1425{
@@ -1552,6 +1564,9 @@ int xfrm6_rcv(struct sk_buff *skb);
1552int xfrm6_input_addr(struct sk_buff *skb, xfrm_address_t *daddr, 1564int xfrm6_input_addr(struct sk_buff *skb, xfrm_address_t *daddr,
1553 xfrm_address_t *saddr, u8 proto); 1565 xfrm_address_t *saddr, u8 proto);
1554void xfrm6_local_error(struct sk_buff *skb, u32 mtu); 1566void xfrm6_local_error(struct sk_buff *skb, u32 mtu);
1567int xfrm6_rcv_cb(struct sk_buff *skb, u8 protocol, int err);
1568int xfrm6_protocol_register(struct xfrm6_protocol *handler, unsigned char protocol);
1569int xfrm6_protocol_deregister(struct xfrm6_protocol *handler, unsigned char protocol);
1555int xfrm6_tunnel_register(struct xfrm6_tunnel *handler, unsigned short family); 1570int xfrm6_tunnel_register(struct xfrm6_tunnel *handler, unsigned short family);
1556int xfrm6_tunnel_deregister(struct xfrm6_tunnel *handler, unsigned short family); 1571int xfrm6_tunnel_deregister(struct xfrm6_tunnel *handler, unsigned short family);
1557__be32 xfrm6_tunnel_alloc_spi(struct net *net, xfrm_address_t *saddr); 1572__be32 xfrm6_tunnel_alloc_spi(struct net *net, xfrm_address_t *saddr);