summaryrefslogtreecommitdiffstats
path: root/usr.sbin/ppp/ip.c
diff options
context:
space:
mode:
authorbrian <brian@FreeBSD.org>2000-09-14 18:01:54 +0000
committerbrian <brian@FreeBSD.org>2000-09-14 18:01:54 +0000
commit3ca5232d936eab25c7b7bd137d597d3ff231ba3a (patch)
treede633f37567208c5334edfddbba51ad7044fabc2 /usr.sbin/ppp/ip.c
parente93e32833df37c0d3f7eb1d06756fa656a318ea1 (diff)
downloadFreeBSD-src-3ca5232d936eab25c7b7bd137d597d3ff231ba3a.zip
FreeBSD-src-3ca5232d936eab25c7b7bd137d597d3ff231ba3a.tar.gz
Understand IPPROTO_ESP and IPPROTO_AH packets
Submitted by: Angelos D. Keromytis <angelos@dsl.cis.upenn.edu>
Diffstat (limited to 'usr.sbin/ppp/ip.c')
-rw-r--r--usr.sbin/ppp/ip.c34
1 files changed, 34 insertions, 0 deletions
diff --git a/usr.sbin/ppp/ip.c b/usr.sbin/ppp/ip.c
index 0a90bac..ada3973 100644
--- a/usr.sbin/ppp/ip.c
+++ b/usr.sbin/ppp/ip.c
@@ -269,6 +269,16 @@ FilterCheck(const struct ip *pip, const struct filter *filter, unsigned *psecs)
sport = ntohs(0);
break;
#endif
+ case IPPROTO_ESP:
+ cproto = P_ESP;
+ estab = syn = finrst = -1;
+ sport = ntohs(0);
+ break;
+ case IPPROTO_AH:
+ cproto = P_AH;
+ estab = syn = finrst = -1;
+ sport = ntohs(0);
+ break;
case IPPROTO_UDP:
case IPPROTO_IPIP:
cproto = P_UDP;
@@ -636,6 +646,30 @@ PacketCheck(struct bundle *bundle, unsigned char *cp, int nb,
}
break;
+ case IPPROTO_ESP:
+ if (logit && loglen < sizeof logbuf) {
+ snprintf(logbuf + loglen, sizeof logbuf - loglen,
+ "ESP: %s ---> ", inet_ntoa(pip->ip_src));
+ loglen += strlen(logbuf + loglen);
+ snprintf(logbuf + loglen, sizeof logbuf - loglen,
+ "%s, spi %08x", inet_ntoa(pip->ip_dst),
+ (u_int32_t) ptop);
+ loglen += strlen(logbuf + loglen);
+ }
+ break;
+
+ case IPPROTO_AH:
+ if (logit && loglen < sizeof logbuf) {
+ snprintf(logbuf + loglen, sizeof logbuf - loglen,
+ "AH: %s ---> ", inet_ntoa(pip->ip_src));
+ loglen += strlen(logbuf + loglen);
+ snprintf(logbuf + loglen, sizeof logbuf - loglen,
+ "%s, spi %08x", inet_ntoa(pip->ip_dst),
+ (u_int32_t) (ptop + sizeof(u_int32_t)));
+ loglen += strlen(logbuf + loglen);
+ }
+ break;
+
case IPPROTO_IGMP:
if (logit && loglen < sizeof logbuf) {
uh = (struct udphdr *) ptop;
OpenPOWER on IntegriCloud