Lines Matching full:m

50 mpls_input(struct ifnet *ifp, struct mbuf *m)  in mpls_input()  argument
61 m_freem(m); in mpls_input()
66 if (m->m_flags & (M_BCAST | M_MCAST)) { in mpls_input()
67 m_freem(m); in mpls_input()
71 if (m->m_len < sizeof(*shim)) { in mpls_input()
72 m = m_pullup(m, sizeof(*shim)); in mpls_input()
73 if (m == NULL) in mpls_input()
77 shim = mtod(m, struct shim_hdr *); in mpls_input()
89 m = mpls_do_error(m, ICMP_TIMXCEED, ICMP_TIMXCEED_INTRANS, 0); in mpls_input()
90 if (m == NULL) in mpls_input()
93 shim = mtod(m, struct shim_hdr *); in mpls_input()
106 m = mpls_shim_pop(m); in mpls_input()
107 if (m == NULL) in mpls_input()
117 shim = mtod(m, struct shim_hdr *); in mpls_input()
125 m = mpls_ip_adjttl(m, ttl); in mpls_input()
126 if (m == NULL) in mpls_input()
129 ipv4_input(ifp, m); in mpls_input()
135 m = mpls_ip6_adjttl(m, ttl); in mpls_input()
136 if (m == NULL) in mpls_input()
139 ipv6_input(ifp, m); in mpls_input()
143 if (m->m_len < sizeof(u_char) && in mpls_input()
144 (m = m_pullup(m, sizeof(u_char))) == NULL) in mpls_input()
146 switch (*mtod(m, u_char *) >> 4) { in mpls_input()
154 m_freem(m); in mpls_input()
159 m_freem(m); in mpls_input()
167 rt = rtalloc(smplstosa(smpls), RT_RESOLVE, m->m_pkthdr.ph_rtableid); in mpls_input()
173 m_freem(m); in mpls_input()
182 m_freem(m); in mpls_input()
189 mpls_input_local(rt, m); in mpls_input()
193 m = mpls_shim_pop(m); in mpls_input()
194 if (m == NULL) in mpls_input()
203 m_freem(m); in mpls_input()
211 if ((m = mpls_ip_adjttl(m, ttl)) == NULL) in mpls_input()
216 if ((m = mpls_ip6_adjttl(m, ttl)) == NULL) in mpls_input()
223 m_freem(m); in mpls_input()
229 (*ifp->if_output)(ifp, m, rt->rt_gateway, rt); in mpls_input()
231 (*ifp->if_ll_output)(ifp, m, rt->rt_gateway, rt); in mpls_input()
235 m = mpls_shim_push(m, rt_mpls); in mpls_input()
238 m = mpls_shim_swap(m, rt_mpls); in mpls_input()
241 m_freem(m); in mpls_input()
245 if (m == NULL) in mpls_input()
249 shim = mtod(m, struct shim_hdr *); in mpls_input()
254 m_freem(m); in mpls_input()
270 m_freem(m); in mpls_input()
274 (*ifp->if_ll_output)(ifp, m, smplstosa(smpls), rt); in mpls_input()
281 mpls_input_local(struct rtentry *rt, struct mbuf *m) in mpls_input_local() argument
287 m_freem(m); in mpls_input_local()
293 (*ifp->if_output)(ifp, m, rt->rt_gateway, rt); in mpls_input_local()
295 (*ifp->if_ll_output)(ifp, m, rt->rt_gateway, rt); in mpls_input_local()
301 mpls_ip_adjttl(struct mbuf *m, u_int8_t ttl) in mpls_ip_adjttl() argument
307 if (m->m_len < sizeof(*ip)) { in mpls_ip_adjttl()
308 m = m_pullup(m, sizeof(*ip)); in mpls_ip_adjttl()
309 if (m == NULL) in mpls_ip_adjttl()
312 ip = mtod(m, struct ip *); in mpls_ip_adjttl()
322 return (m); in mpls_ip_adjttl()
327 mpls_ip6_adjttl(struct mbuf *m, u_int8_t ttl) in mpls_ip6_adjttl() argument
331 if (m->m_len < sizeof(*ip6)) { in mpls_ip6_adjttl()
332 m = m_pullup(m, sizeof(*ip6)); in mpls_ip6_adjttl()
333 if (m == NULL) in mpls_ip6_adjttl()
336 ip6 = mtod(m, struct ip6_hdr *); in mpls_ip6_adjttl()
340 return (m); in mpls_ip6_adjttl()
345 mpls_do_error(struct mbuf *m, int type, int code, int destmtu) in mpls_do_error() argument
358 if (m->m_len < sizeof(*shim) && in mpls_do_error()
359 (m = m_pullup(m, sizeof(*shim))) == NULL) in mpls_do_error()
361 stack[nstk] = *mtod(m, struct shim_hdr *); in mpls_do_error()
362 m_adj(m, sizeof(*shim)); in mpls_do_error()
368 if (m->m_len < sizeof(u_char) && in mpls_do_error()
369 (m = m_pullup(m, sizeof(u_char))) == NULL) in mpls_do_error()
371 switch (*mtod(m, u_char *) >> 4) { in mpls_do_error()
373 if (m->m_len < sizeof(*ip) && in mpls_do_error()
374 (m = m_pullup(m, sizeof(*ip))) == NULL) in mpls_do_error()
376 m = icmp_do_error(m, type, code, 0, destmtu); in mpls_do_error()
377 if (m == NULL) in mpls_do_error()
380 if (icmp_do_exthdr(m, ICMP_EXT_MPLS, 1, stack, in mpls_do_error()
395 m_freem(m); in mpls_do_error()
406 m_freem(m); in mpls_do_error()
410 error = icmp_reflect(m, NULL, ia); in mpls_do_error()
415 ip = mtod(m, struct ip *); in mpls_do_error()
419 in_hdr_cksum_out(m, NULL); in mpls_do_error()
422 icp = (struct icmp *)(mtod(m, caddr_t) + sizeof(*ip)); in mpls_do_error()
424 icp->icmp_cksum = in4_cksum(m, 0, sizeof(*ip), in mpls_do_error()
432 m_freem(m); in mpls_do_error()
437 M_PREPEND(m, (nstk + 1) * sizeof(*shim), M_NOWAIT); in mpls_do_error()
438 if (m == NULL) in mpls_do_error()
440 m_copyback(m, 0, (nstk + 1) * sizeof(*shim), stack, M_NOWAIT); in mpls_do_error()
443 shim = mtod(m, struct shim_hdr *); in mpls_do_error()
447 return (m); in mpls_do_error()