Module Name: src Committed By: zoltan Date: Sat Nov 5 10:23:26 UTC 2011
Modified Files: src/sys/net/npf: npf_handler.c npf_sendpkt.c Log Message: When building the kernel without IPv6 support, compilation failed. Fix that. To generate a diff of this commit: cvs rdiff -u -r1.8 -r1.9 src/sys/net/npf/npf_handler.c cvs rdiff -u -r1.5 -r1.6 src/sys/net/npf/npf_sendpkt.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/sys/net/npf/npf_handler.c diff -u src/sys/net/npf/npf_handler.c:1.8 src/sys/net/npf/npf_handler.c:1.9 --- src/sys/net/npf/npf_handler.c:1.8 Fri Nov 4 01:00:27 2011 +++ src/sys/net/npf/npf_handler.c Sat Nov 5 10:23:26 2011 @@ -1,4 +1,4 @@ -/* $NetBSD: npf_handler.c,v 1.8 2011/11/04 01:00:27 zoltan Exp $ */ +/* $NetBSD: npf_handler.c,v 1.9 2011/11/05 10:23:26 zoltan Exp $ */ /*- * Copyright (c) 2009-2010 The NetBSD Foundation, Inc. @@ -34,7 +34,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: npf_handler.c,v 1.8 2011/11/04 01:00:27 zoltan Exp $"); +__KERNEL_RCSID(0, "$NetBSD: npf_handler.c,v 1.9 2011/11/05 10:23:26 zoltan Exp $"); #include <sys/param.h> #include <sys/systm.h> @@ -110,14 +110,17 @@ npf_packet_handler(void *arg, struct mbu struct ip *ip = nbuf_dataptr(*mp); /* Pass to IPv4 reassembly mechanism. */ ret = ip_reass_packet(mp, ip); - } else if (npf_iscached(&npc, NPC_IP6)) { + } else { + KASSERT(npf_iscached(&npc, NPC_IP6)); +#ifdef INET6 /* frag6_input's offset is the start of the fragment header */ size_t hlen = npf_cache_hlen(&npc, nbuf); /* Pass to IPv6 reassembly mechanism. */ ret = ip6_reass_packet(mp, hlen); - } else { +#else KASSERT(false); +#endif } if (ret != 0) { Index: src/sys/net/npf/npf_sendpkt.c diff -u src/sys/net/npf/npf_sendpkt.c:1.5 src/sys/net/npf/npf_sendpkt.c:1.6 --- src/sys/net/npf/npf_sendpkt.c:1.5 Fri Nov 4 01:00:27 2011 +++ src/sys/net/npf/npf_sendpkt.c Sat Nov 5 10:23:26 2011 @@ -1,4 +1,4 @@ -/* $NetBSD: npf_sendpkt.c,v 1.5 2011/11/04 01:00:27 zoltan Exp $ */ +/* $NetBSD: npf_sendpkt.c,v 1.6 2011/11/05 10:23:26 zoltan Exp $ */ /*- * Copyright (c) 2010 The NetBSD Foundation, Inc. @@ -34,7 +34,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: npf_sendpkt.c,v 1.5 2011/11/04 01:00:27 zoltan Exp $"); +__KERNEL_RCSID(0, "$NetBSD: npf_sendpkt.c,v 1.6 2011/11/05 10:23:26 zoltan Exp $"); #include <sys/param.h> #include <sys/kernel.h> @@ -79,10 +79,12 @@ npf_return_tcp(npf_cache_t *npc, nbuf_t } /* Create and setup a network buffer. */ - if (npc->npc_info & NPC_IP4) + if (npf_iscached(npc, NPC_IP4)) len = sizeof(struct ip) + sizeof(struct tcphdr); - else + else { + KASSERT(npf_iscached(npc, NPC_IP6)); len = sizeof(struct ip6_hdr) + sizeof(struct tcphdr); + } m = m_gethdr(M_DONTWAIT, MT_HEADER); if (m == NULL) { @@ -92,7 +94,7 @@ npf_return_tcp(npf_cache_t *npc, nbuf_t m->m_len = len; m->m_pkthdr.len = len; - if (npc->npc_info & NPC_IP4) { + if (npf_iscached(npc, NPC_IP4)) { struct ip *oip = &npc->npc_ip.v4; ip = mtod(m, struct ip *); memset(ip, 0, len); @@ -108,6 +110,7 @@ npf_return_tcp(npf_cache_t *npc, nbuf_t th = (struct tcphdr *)(ip + 1); } else { + KASSERT(npf_iscached(npc, NPC_IP6)); struct ip6_hdr *oip = &npc->npc_ip.v6; ip6 = mtod(m, struct ip6_hdr *); memset(ip6, 0, len); @@ -133,7 +136,7 @@ npf_return_tcp(npf_cache_t *npc, nbuf_t th->th_off = sizeof(struct tcphdr) >> 2; th->th_flags = TH_ACK | TH_RST; - if (npc->npc_info & NPC_IP4) { + if (npf_iscached(npc, NPC_IP4)) { th->th_sum = in_cksum(m, len); /* Second fill of IPv4 header, fill correct IP length. */ @@ -143,14 +146,24 @@ npf_return_tcp(npf_cache_t *npc, nbuf_t ip->ip_len = htons(len); ip->ip_ttl = DEFAULT_IP_TTL; } else { + KASSERT(npf_iscached(npc, NPC_IP6)); +#ifdef INET6 th->th_sum = in6_cksum(m, IPPROTO_TCP, sizeof(struct ip6_hdr), sizeof(struct tcphdr)); +#else + KASSERT(false); +#endif } /* Pass to IP layer. */ if (npc->npc_info & NPC_IP4) { return ip_output(m, NULL, NULL, IP_FORWARDING, NULL, NULL); } else { +#ifdef INET6 return ip6_output(m, NULL, NULL, IPV6_FORWARDING, NULL, NULL, NULL); +#else + KASSERT(false); + return 0; +#endif } } @@ -166,7 +179,11 @@ npf_return_icmp(npf_cache_t *npc, nbuf_t icmp_error(m, ICMP_UNREACH, ICMP_UNREACH_ADMIN_PROHIBIT, 0, 0); } else { KASSERT(npf_iscached(npc, NPC_IP6)); +#ifdef INET6 icmp6_error(m, ICMP6_DST_UNREACH, ICMP6_DST_UNREACH_ADMIN, 0); +#else + KASSERT(false); +#endif } return 0; }