diff options
Diffstat (limited to 'include/net/xfrm.h')
-rw-r--r-- | include/net/xfrm.h | 15 |
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 | ||
1377 | struct 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. */ |
1378 | struct xfrm_tunnel { | 1388 | struct xfrm_tunnel { |
1379 | int (*handler)(struct sk_buff *skb); | 1389 | int (*handler)(struct sk_buff *skb); |
@@ -1408,6 +1418,8 @@ int xfrm6_init(void); | |||
1408 | void xfrm6_fini(void); | 1418 | void xfrm6_fini(void); |
1409 | int xfrm6_state_init(void); | 1419 | int xfrm6_state_init(void); |
1410 | void xfrm6_state_fini(void); | 1420 | void xfrm6_state_fini(void); |
1421 | int xfrm6_protocol_init(void); | ||
1422 | void xfrm6_protocol_fini(void); | ||
1411 | #else | 1423 | #else |
1412 | static inline int xfrm6_init(void) | 1424 | static inline int xfrm6_init(void) |
1413 | { | 1425 | { |
@@ -1552,6 +1564,9 @@ int xfrm6_rcv(struct sk_buff *skb); | |||
1552 | int xfrm6_input_addr(struct sk_buff *skb, xfrm_address_t *daddr, | 1564 | int 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); |
1554 | void xfrm6_local_error(struct sk_buff *skb, u32 mtu); | 1566 | void xfrm6_local_error(struct sk_buff *skb, u32 mtu); |
1567 | int xfrm6_rcv_cb(struct sk_buff *skb, u8 protocol, int err); | ||
1568 | int xfrm6_protocol_register(struct xfrm6_protocol *handler, unsigned char protocol); | ||
1569 | int xfrm6_protocol_deregister(struct xfrm6_protocol *handler, unsigned char protocol); | ||
1555 | int xfrm6_tunnel_register(struct xfrm6_tunnel *handler, unsigned short family); | 1570 | int xfrm6_tunnel_register(struct xfrm6_tunnel *handler, unsigned short family); |
1556 | int xfrm6_tunnel_deregister(struct xfrm6_tunnel *handler, unsigned short family); | 1571 | int 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); |