summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorsobomax <sobomax@FreeBSD.org>2004-01-30 09:03:01 +0000
committersobomax <sobomax@FreeBSD.org>2004-01-30 09:03:01 +0000
commit2b5008cb00729f95719898d4a9ea3dedef494d47 (patch)
tree3df42d90bb8eb699080d9bc3517350f8f51d76ea
parent5dfe9e26eabfd080d82fd9209e3a289ac08b6fda (diff)
downloadFreeBSD-src-2b5008cb00729f95719898d4a9ea3dedef494d47.zip
FreeBSD-src-2b5008cb00729f95719898d4a9ea3dedef494d47.tar.gz
Remove NetBSD'isms (add FreeBSD'isms?), which makes gre(4) working again.
-rw-r--r--sys/net/if_gre.c5
-rw-r--r--sys/netinet/ip_gre.c2
2 files changed, 3 insertions, 4 deletions
diff --git a/sys/net/if_gre.c b/sys/net/if_gre.c
index aab7068..254d9a3 100644
--- a/sys/net/if_gre.c
+++ b/sys/net/if_gre.c
@@ -351,8 +351,7 @@ gre_output(struct ifnet *ifp, struct mbuf *m, struct sockaddr *dst,
gh = mtod(m, struct greip *);
if (sc->g_proto == IPPROTO_GRE) {
/* we don't have any GRE flags for now */
-
- memset((void *)&gh->gi_g, 0, sizeof(struct gre_h));
+ memset((void *)gh, 0, sizeof(struct greip));
gh->gi_ptype = htons(etype);
}
@@ -364,7 +363,7 @@ gre_output(struct ifnet *ifp, struct mbuf *m, struct sockaddr *dst,
((struct ip*)gh)->ip_ttl = GRE_TTL;
((struct ip*)gh)->ip_tos = ip->ip_tos;
((struct ip*)gh)->ip_id = ip->ip_id;
- gh->gi_len = htons(m->m_pkthdr.len);
+ gh->gi_len = m->m_pkthdr.len;
}
ifp->if_opackets++;
diff --git a/sys/netinet/ip_gre.c b/sys/netinet/ip_gre.c
index ad9ed30..960b8a8 100644
--- a/sys/netinet/ip_gre.c
+++ b/sys/netinet/ip_gre.c
@@ -204,8 +204,8 @@ gre_input2(struct mbuf *m ,int hlen, u_char proto)
m_freem(m);
return (EINVAL);
}
+ /* Unlike NetBSD, in FreeBSD m_adj() adjusts m->m_pkthdr.len as well */
m_adj(m, hlen);
- m->m_pkthdr.len -= hlen;
if (sc->sc_if.if_bpf) {
u_int32_t af = AF_INET;
OpenPOWER on IntegriCloud