1/* 2 * Copyright (c) 1998, Larry Lile 3 * All rights reserved. 4 * 5 * For latest sources and information on this driver, please 6 * go to http://anarchy.stdio.com. 7 * 8 * Questions, comments or suggestions should be directed to --- 16 unchanged lines hidden (view full) --- 25 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 26 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 27 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 28 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 29 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 30 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 31 * SUCH DAMAGE. 32 * |
33 * $FreeBSD: head/sys/net/if_iso88025subr.c 111888 2003-03-04 23:19:55Z jlemon $ |
34 * 35 */ 36 37/* 38 * 39 * General ISO 802.5 (Token Ring) support routines 40 * 41 */ --- 346 unchanged lines hidden (view full) --- 388 * ISO 88025 de-encapsulation 389 */ 390void 391iso88025_input(ifp, th, m) 392 struct ifnet *ifp; 393 struct iso88025_header *th; 394 struct mbuf *m; 395{ |
396 int isr; |
397 struct llc *l; 398 399 if ((ifp->if_flags & IFF_UP) == 0) { 400 m_freem(m); 401 return; 402 } 403 404 getmicrotime(&ifp->if_lastchange); --- 15 unchanged lines hidden (view full) --- 420#ifdef IPX 421 case ETHERTYPE_IPX_8022: /* Thanks a bunch Novell */ 422 if ((l->llc_control != LLC_UI) || 423 (l->llc_ssap != ETHERTYPE_IPX_8022)) 424 goto dropanyway; 425 426 th->iso88025_shost[0] &= ~(TR_RII); 427 m_adj(m, 3); |
428 isr = NETISR_IPX; |
429 break; 430#endif /* IPX */ 431 case LLC_SNAP_LSAP: { 432 u_int16_t type; 433 if ((l->llc_control != LLC_UI) || 434 (l->llc_ssap != LLC_SNAP_LSAP)) 435 goto dropanyway; 436 --- 5 unchanged lines hidden (view full) --- 442 type = ntohs(l->llc_un.type_snap.ether_type); 443 m_adj(m, LLC_SNAPFRAMELEN); 444 switch (type) { 445#ifdef INET 446 case ETHERTYPE_IP: 447 th->iso88025_shost[0] &= ~(TR_RII); 448 if (ipflow_fastforward(m)) 449 return; |
450 isr = NETISR_IP; |
451 break; 452 453 case ETHERTYPE_ARP: 454 if (ifp->if_flags & IFF_NOARP) 455 goto dropanyway; |
456 isr = NETISR_ARP; |
457 break; 458#endif /* INET */ 459#ifdef IPX_SNAP /* XXX: Not supported! */ 460 case ETHERTYPE_IPX: 461 th->iso88025_shost[0] &= ~(TR_RII); |
462 isr = NETISR_IPX; |
463 break; 464#endif /* IPX_SNAP */ 465#ifdef NOT_YET 466#ifdef INET6 467 case ETHERTYPE_IPV6: 468 th->iso88025_shost[0] &= ~(TR_RII); |
469 isr = NETISR_IPV6; |
470 break; 471#endif /* INET6 */ 472#endif /* NOT_YET */ 473 default: 474 printf("iso88025_input: unexpected llc_snap ether_type 0x%02x\n", type); 475 m_freem(m); 476 return; 477 } --- 55 unchanged lines hidden (view full) --- 533 break; 534 default: 535 printf("iso88025_input: unknown dsap 0x%x\n", l->llc_dsap); 536 ifp->if_noproto++; 537 dropanyway: 538 m_freem(m); 539 return; 540 } |
541 netisr_dispatch(isr, m); |
542} |