summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorErmal Luçi <eri@FreeBSD.org>2015-07-21 21:46:24 +0000
committerErmal Luçi <eri@FreeBSD.org>2015-07-21 21:46:24 +0000
commit705f4d9c6acf7f85c0eb66fddfa59893a01ba00d (patch)
treed31df53ffd6c92009509510ade2b72e6496b84ee
parent39020fdfa0f1ceb466d1956801378c53e1c8e611 (diff)
Notes
-rw-r--r--sys/netinet/udp_usrreq.c3
-rw-r--r--sys/netipsec/ipsec.h2
-rw-r--r--sys/netipsec/ipsec_input.c29
3 files changed, 10 insertions, 24 deletions
diff --git a/sys/netinet/udp_usrreq.c b/sys/netinet/udp_usrreq.c
index 415fc8c30a6e..7c57e6b1ee47 100644
--- a/sys/netinet/udp_usrreq.c
+++ b/sys/netinet/udp_usrreq.c
@@ -1666,7 +1666,8 @@ udp4_espdecap(struct inpcb *inp, struct mbuf *m, int off)
if (m->m_pkthdr.csum_flags & CSUM_DATA_VALID)
m->m_pkthdr.csum_flags &= ~(CSUM_DATA_VALID|CSUM_PSEUDO_HDR);
- (void) ipsec4_common_input(m, iphlen, ip->ip_p);
+ (void) ipsec_common_input(m, iphlen, offsetof(struct ip, ip_p),
+ AF_INET, ip->ip_p);
return (NULL); /* NB: consumed, bypass processing. */
}
#endif /* defined(IPSEC) && defined(IPSEC_NAT_T) */
diff --git a/sys/netipsec/ipsec.h b/sys/netipsec/ipsec.h
index 442387aefe44..328e8a37eb78 100644
--- a/sys/netipsec/ipsec.h
+++ b/sys/netipsec/ipsec.h
@@ -337,7 +337,7 @@ extern void ah4_ctlinput(int cmd, struct sockaddr *sa, void *);
extern int esp4_input(struct mbuf **mp, int *offp, int proto);
extern void esp4_ctlinput(int cmd, struct sockaddr *sa, void *);
extern int ipcomp4_input(struct mbuf **mp, int *offp, int proto);
-extern int ipsec4_common_input(struct mbuf *m, ...);
+extern int ipsec_common_input(struct mbuf *m, int, int, int, int);
extern int ipsec4_common_input_cb(struct mbuf *m, struct secasvar *sav,
int skip, int protoff);
extern int ipsec4_process_packet(struct mbuf *, struct ipsecrequest *);
diff --git a/sys/netipsec/ipsec_input.c b/sys/netipsec/ipsec_input.c
index 583769952ff7..6a41ad9f92da 100644
--- a/sys/netipsec/ipsec_input.c
+++ b/sys/netipsec/ipsec_input.c
@@ -118,7 +118,7 @@ static void ipsec4_common_ctlinput(int, struct sockaddr *, void *, int);
* and call the appropriate transform. The transform callback
* takes care of further processing (like ingress filtering).
*/
-static int
+int
ipsec_common_input(struct mbuf *m, int skip, int protoff, int af, int sproto)
{
char buf[INET6_ADDRSTRLEN];
@@ -243,24 +243,6 @@ ipsec_common_input(struct mbuf *m, int skip, int protoff, int af, int sproto)
}
#ifdef INET
-/*
- * Common input handler for IPv4 AH, ESP, and IPCOMP.
- */
-int
-ipsec4_common_input(struct mbuf *m, ...)
-{
- va_list ap;
- int off, nxt;
-
- va_start(ap, m);
- off = va_arg(ap, int);
- nxt = va_arg(ap, int);
- va_end(ap);
-
- return ipsec_common_input(m, off, offsetof(struct ip, ip_p),
- AF_INET, nxt);
-}
-
int
ah4_input(struct mbuf **mp, int *offp, int proto)
{
@@ -271,7 +253,8 @@ ah4_input(struct mbuf **mp, int *offp, int proto)
off = *offp;
*mp = NULL;
- ipsec4_common_input(m, off, IPPROTO_AH);
+ ipsec_common_input(m, off, offsetof(struct ip, ip_p),
+ AF_INET, IPPROTO_AH);
return (IPPROTO_DONE);
}
void
@@ -292,7 +275,8 @@ esp4_input(struct mbuf **mp, int *offp, int proto)
off = *offp;
mp = NULL;
- ipsec4_common_input(m, off, IPPROTO_ESP);
+ ipsec_common_input(m, off, offsetof(struct ip, ip_p),
+ AF_INET, IPPROTO_ESP);
return (IPPROTO_DONE);
}
@@ -314,7 +298,8 @@ ipcomp4_input(struct mbuf **mp, int *offp, int proto)
off = *offp;
mp = NULL;
- ipsec4_common_input(m, off, IPPROTO_IPCOMP);
+ ipsec_common_input(m, off, offsetof(struct ip, ip_p),
+ AF_INET, IPPROTO_IPCOMP);
return (IPPROTO_DONE);
}