Deleted Added
full compact
if_atmsubr.c (124283) if_atmsubr.c (128636)
1/* $NetBSD: if_atmsubr.c,v 1.10 1997/03/11 23:19:51 chuck Exp $ */
2
3/*
4 *
5 * Copyright (c) 1996 Charles D. Cranor and Washington University.
6 * All rights reserved.
7 *
8 * Redistribution and use in source and binary forms, with or without

--- 21 unchanged lines hidden (view full) ---

30 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
31 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
32 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
33 *
34 * if_atmsubr.c
35 */
36
37#include <sys/cdefs.h>
1/* $NetBSD: if_atmsubr.c,v 1.10 1997/03/11 23:19:51 chuck Exp $ */
2
3/*
4 *
5 * Copyright (c) 1996 Charles D. Cranor and Washington University.
6 * All rights reserved.
7 *
8 * Redistribution and use in source and binary forms, with or without

--- 21 unchanged lines hidden (view full) ---

30 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
31 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
32 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
33 *
34 * if_atmsubr.c
35 */
36
37#include <sys/cdefs.h>
38__FBSDID("$FreeBSD: head/sys/net/if_atmsubr.c 124283 2004-01-09 11:25:14Z harti $");
38__FBSDID("$FreeBSD: head/sys/net/if_atmsubr.c 128636 2004-04-25 09:24:52Z luigi $");
39
40#include "opt_inet.h"
41#include "opt_inet6.h"
42#include "opt_mac.h"
43#include "opt_natm.h"
44
45#include <sys/param.h>
46#include <sys/systm.h>

--- 74 unchanged lines hidden (view full) ---

121int
122atm_output(struct ifnet *ifp, struct mbuf *m0, struct sockaddr *dst,
123 struct rtentry *rt0)
124{
125 u_int16_t etype = 0; /* if using LLC/SNAP */
126 int error = 0, sz;
127 struct atm_pseudohdr atmdst, *ad;
128 struct mbuf *m = m0;
39
40#include "opt_inet.h"
41#include "opt_inet6.h"
42#include "opt_mac.h"
43#include "opt_natm.h"
44
45#include <sys/param.h>
46#include <sys/systm.h>

--- 74 unchanged lines hidden (view full) ---

121int
122atm_output(struct ifnet *ifp, struct mbuf *m0, struct sockaddr *dst,
123 struct rtentry *rt0)
124{
125 u_int16_t etype = 0; /* if using LLC/SNAP */
126 int error = 0, sz;
127 struct atm_pseudohdr atmdst, *ad;
128 struct mbuf *m = m0;
129 struct rtentry *rt;
130 struct atmllc *atmllc;
131 struct atmllc *llc_hdr = NULL;
132 u_int32_t atm_flags;
133
134#ifdef MAC
135 error = mac_check_ifnet_transmit(ifp, m);
136 if (error)
137 senderr(error);
138#endif
139
140 if ((ifp->if_flags & (IFF_UP | IFF_RUNNING)) != (IFF_UP | IFF_RUNNING))
141 senderr(ENETDOWN);
142
143 /*
129 struct atmllc *atmllc;
130 struct atmllc *llc_hdr = NULL;
131 u_int32_t atm_flags;
132
133#ifdef MAC
134 error = mac_check_ifnet_transmit(ifp, m);
135 if (error)
136 senderr(error);
137#endif
138
139 if ((ifp->if_flags & (IFF_UP | IFF_RUNNING)) != (IFF_UP | IFF_RUNNING))
140 senderr(ENETDOWN);
141
142 /*
144 * check route
145 */
146 error = rt_check(&rt, &rt0, dst);
147 if (error)
148 goto bad;
149
150 /*
151 * check for non-native ATM traffic (dst != NULL)
152 */
153 if (dst) {
154 switch (dst->sa_family) {
155
156#if defined(INET) || defined(INET6)
157 case AF_INET:
158 case AF_INET6:
143 * check for non-native ATM traffic (dst != NULL)
144 */
145 if (dst) {
146 switch (dst->sa_family) {
147
148#if defined(INET) || defined(INET6)
149 case AF_INET:
150 case AF_INET6:
151 {
152 struct rtentry *rt;
153 /*
154 * check route
155 */
156 error = rt_check(&rt, &rt0, dst);
157 if (error)
158 goto bad;
159
159 if (dst->sa_family == AF_INET6)
160 etype = ETHERTYPE_IPV6;
161 else
162 etype = ETHERTYPE_IP;
163 if (!atmresolve(rt, m, dst, &atmdst)) {
164 m = NULL;
165 /* XXX: atmresolve already free'd it */
166 senderr(EHOSTUNREACH);
167 /* XXX: put ATMARP stuff here */
168 /* XXX: watch who frees m on failure */
169 }
160 if (dst->sa_family == AF_INET6)
161 etype = ETHERTYPE_IPV6;
162 else
163 etype = ETHERTYPE_IP;
164 if (!atmresolve(rt, m, dst, &atmdst)) {
165 m = NULL;
166 /* XXX: atmresolve already free'd it */
167 senderr(EHOSTUNREACH);
168 /* XXX: put ATMARP stuff here */
169 /* XXX: watch who frees m on failure */
170 }
171 }
170 break;
171#endif /* INET || INET6 */
172
173 case AF_UNSPEC:
174 /*
175 * XXX: bpfwrite. assuming dst contains 12 bytes
176 * (atm pseudo header (4) + LLC/SNAP (8))
177 */

--- 312 unchanged lines hidden ---
172 break;
173#endif /* INET || INET6 */
174
175 case AF_UNSPEC:
176 /*
177 * XXX: bpfwrite. assuming dst contains 12 bytes
178 * (atm pseudo header (4) + LLC/SNAP (8))
179 */

--- 312 unchanged lines hidden ---