aboutsummaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
authorMasahide NAKAMURA <nakam@linux-ipv6.org>2006-08-23 23:44:06 -0400
committerDavid S. Miller <davem@sunset.davemloft.net>2006-09-22 18:08:30 -0400
commit97a64b4577ae2bc5599dbd008a3cd9e25de9b9f5 (patch)
tree424700fb0a41b28c5615d0d21ca74d699e1fa872 /include
parentdf0ba92a99ca757039dfa84a929281ea3f7a50e8 (diff)
[XFRM]: Introduce XFRM_MSG_REPORT.
XFRM_MSG_REPORT is a message as notification of state protocol and selector from kernel to user-space. Mobile IPv6 will use it when inbound reject is occurred at route optimization to make user-space know a binding error requirement. Based on MIPL2 kernel patch. Signed-off-by: Masahide NAKAMURA <nakam@linux-ipv6.org> Signed-off-by: YOSHIFUJI Hideaki <yoshfuji@linux-ipv6.org> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'include')
-rw-r--r--include/linux/xfrm.h12
-rw-r--r--include/net/xfrm.h2
2 files changed, 14 insertions, 0 deletions
diff --git a/include/linux/xfrm.h b/include/linux/xfrm.h
index 1d8c1f22c12d..4009f4445fa9 100644
--- a/include/linux/xfrm.h
+++ b/include/linux/xfrm.h
@@ -166,6 +166,10 @@ enum {
166#define XFRM_MSG_NEWAE XFRM_MSG_NEWAE 166#define XFRM_MSG_NEWAE XFRM_MSG_NEWAE
167 XFRM_MSG_GETAE, 167 XFRM_MSG_GETAE,
168#define XFRM_MSG_GETAE XFRM_MSG_GETAE 168#define XFRM_MSG_GETAE XFRM_MSG_GETAE
169
170 XFRM_MSG_REPORT,
171#define XFRM_MSG_REPORT XFRM_MSG_REPORT
172
169 __XFRM_MSG_MAX 173 __XFRM_MSG_MAX
170}; 174};
171#define XFRM_MSG_MAX (__XFRM_MSG_MAX - 1) 175#define XFRM_MSG_MAX (__XFRM_MSG_MAX - 1)
@@ -325,12 +329,18 @@ struct xfrm_usersa_flush {
325 __u8 proto; 329 __u8 proto;
326}; 330};
327 331
332struct xfrm_user_report {
333 __u8 proto;
334 struct xfrm_selector sel;
335};
336
328#ifndef __KERNEL__ 337#ifndef __KERNEL__
329/* backwards compatibility for userspace */ 338/* backwards compatibility for userspace */
330#define XFRMGRP_ACQUIRE 1 339#define XFRMGRP_ACQUIRE 1
331#define XFRMGRP_EXPIRE 2 340#define XFRMGRP_EXPIRE 2
332#define XFRMGRP_SA 4 341#define XFRMGRP_SA 4
333#define XFRMGRP_POLICY 8 342#define XFRMGRP_POLICY 8
343#define XFRMGRP_REPORT 0x10
334#endif 344#endif
335 345
336enum xfrm_nlgroups { 346enum xfrm_nlgroups {
@@ -346,6 +356,8 @@ enum xfrm_nlgroups {
346#define XFRMNLGRP_POLICY XFRMNLGRP_POLICY 356#define XFRMNLGRP_POLICY XFRMNLGRP_POLICY
347 XFRMNLGRP_AEVENTS, 357 XFRMNLGRP_AEVENTS,
348#define XFRMNLGRP_AEVENTS XFRMNLGRP_AEVENTS 358#define XFRMNLGRP_AEVENTS XFRMNLGRP_AEVENTS
359 XFRMNLGRP_REPORT,
360#define XFRMNLGRP_REPORT XFRMNLGRP_REPORT
349 __XFRMNLGRP_MAX 361 __XFRMNLGRP_MAX
350}; 362};
351#define XFRMNLGRP_MAX (__XFRMNLGRP_MAX - 1) 363#define XFRMNLGRP_MAX (__XFRMNLGRP_MAX - 1)
diff --git a/include/net/xfrm.h b/include/net/xfrm.h
index 9ebbdc1dd471..0b223eed4c9b 100644
--- a/include/net/xfrm.h
+++ b/include/net/xfrm.h
@@ -381,6 +381,7 @@ struct xfrm_mgr
381 struct xfrm_policy *(*compile_policy)(struct sock *sk, int opt, u8 *data, int len, int *dir); 381 struct xfrm_policy *(*compile_policy)(struct sock *sk, int opt, u8 *data, int len, int *dir);
382 int (*new_mapping)(struct xfrm_state *x, xfrm_address_t *ipaddr, u16 sport); 382 int (*new_mapping)(struct xfrm_state *x, xfrm_address_t *ipaddr, u16 sport);
383 int (*notify_policy)(struct xfrm_policy *x, int dir, struct km_event *c); 383 int (*notify_policy)(struct xfrm_policy *x, int dir, struct km_event *c);
384 int (*report)(u8 proto, struct xfrm_selector *sel, xfrm_address_t *addr);
384}; 385};
385 386
386extern int xfrm_register_km(struct xfrm_mgr *km); 387extern int xfrm_register_km(struct xfrm_mgr *km);
@@ -1043,6 +1044,7 @@ extern void xfrm_init_pmtu(struct dst_entry *dst);
1043extern wait_queue_head_t km_waitq; 1044extern wait_queue_head_t km_waitq;
1044extern int km_new_mapping(struct xfrm_state *x, xfrm_address_t *ipaddr, u16 sport); 1045extern int km_new_mapping(struct xfrm_state *x, xfrm_address_t *ipaddr, u16 sport);
1045extern void km_policy_expired(struct xfrm_policy *pol, int dir, int hard, u32 pid); 1046extern void km_policy_expired(struct xfrm_policy *pol, int dir, int hard, u32 pid);
1047extern int km_report(u8 proto, struct xfrm_selector *sel, xfrm_address_t *addr);
1046 1048
1047extern void xfrm_input_init(void); 1049extern void xfrm_input_init(void);
1048extern int xfrm_parse_spi(struct sk_buff *skb, u8 nexthdr, u32 *spi, u32 *seq); 1050extern int xfrm_parse_spi(struct sk_buff *skb, u8 nexthdr, u32 *spi, u32 *seq);