aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMaxim Sobolev <sobomax@FreeBSD.org>2004-01-30 09:03:01 +0000
committerMaxim Sobolev <sobomax@FreeBSD.org>2004-01-30 09:03:01 +0000
commit4c83789253b997e78437b5564459f3d51b557b00 (patch)
tree3df42d90bb8eb699080d9bc3517350f8f51d76ea
parent9148fa21dd029d470962b252889bf923b7a431d5 (diff)
downloadsrc-4c83789253b997e78437b5564459f3d51b557b00.tar.gz
src-4c83789253b997e78437b5564459f3d51b557b00.zip
Remove NetBSD'isms (add FreeBSD'isms?), which makes gre(4) working again.
Notes
Notes: svn path=/head/; revision=125226
-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 aab706833353..254d9a3b33f8 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 ad9ed3066b62..960b8a813651 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;