diff options
| author | George V. Neville-Neil <gnn@FreeBSD.org> | 2007-09-12 05:54:53 +0000 |
|---|---|---|
| committer | George V. Neville-Neil <gnn@FreeBSD.org> | 2007-09-12 05:54:53 +0000 |
| commit | e61a9df52b49892676471f8ff40fe23e23f2c7e4 (patch) | |
| tree | eeb6c82b4855896350a2378359e2a89ede864975 /sys/netipsec/ipsec_input.c | |
| parent | 45c5d90b6517bcaf0371c942370cb8a4517af921 (diff) | |
Notes
Diffstat (limited to 'sys/netipsec/ipsec_input.c')
| -rw-r--r-- | sys/netipsec/ipsec_input.c | 21 |
1 files changed, 17 insertions, 4 deletions
diff --git a/sys/netipsec/ipsec_input.c b/sys/netipsec/ipsec_input.c index 0e35a3787c1d..cea8aff5daf0 100644 --- a/sys/netipsec/ipsec_input.c +++ b/sys/netipsec/ipsec_input.c @@ -761,6 +761,11 @@ bad: void esp6_ctlinput(int cmd, struct sockaddr *sa, void *d) { + struct ip6ctlparam *ip6cp = NULL; + struct mbuf *m = NULL; + struct ip6_hdr *ip6; + int off; + if (sa->sa_family != AF_INET6 || sa->sa_len != sizeof(struct sockaddr_in6)) return; @@ -768,10 +773,18 @@ esp6_ctlinput(int cmd, struct sockaddr *sa, void *d) return; /* if the parameter is from icmp6, decode it. */ - if (d != NULL) { - struct ip6ctlparam *ip6cp = (struct ip6ctlparam *)d; - struct mbuf *m = ip6cp->ip6c_m; - int off = ip6cp->ip6c_off; + if (d != NULL) { + ip6cp = (struct ip6ctlparam *)d; + m = ip6cp->ip6c_m; + ip6 = ip6cp->ip6c_ip6; + off = ip6cp->ip6c_off; + } else { + m = NULL; + ip6 = NULL; + off = 0; /* calm gcc */ + } + + if (ip6 != NULL) { struct ip6ctlparam ip6cp1; |
