Page Menu
Home
FreeBSD
Search
Configure Global Search
Log In
Files
F171199463
D14875.id40859.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Flag For Later
Award Token
Size
30 KB
Referenced Files
None
Subscribers
None
D14875.id40859.diff
View Options
Index: head/UPDATING
===================================================================
--- head/UPDATING
+++ head/UPDATING
@@ -51,6 +51,11 @@
****************************** SPECIAL WARNING: ******************************
+20180528:
+ Support for token ring networks has been removed. If you
+ have "device token" in your kernel config you should remove
+ it. No device drivers supported token ring.
+
20180323:
makefs was modified to be able to tag ISO9660 El Torito boot catalog
entries as EFI instead of overloading the i386 tag as done previously.
Index: head/sys/conf/NOTES
===================================================================
--- head/sys/conf/NOTES
+++ head/sys/conf/NOTES
@@ -807,7 +807,7 @@
# The `ether' device provides generic code to handle
# Ethernets; it is MANDATORY when an Ethernet device driver is
-# configured or token-ring is enabled.
+# configured.
device ether
# The `vlan' device implements the VLAN tagging of Ethernet frames
@@ -845,9 +845,6 @@
# The 'wlan_amrr' device provides AMRR transmit rate control algorithm
device wlan_acl
device wlan_amrr
-
-# Generic TokenRing
-device token
# The `fddi' device provides generic code to support FDDI.
device fddi
Index: head/sys/conf/files
===================================================================
--- head/sys/conf/files
+++ head/sys/conf/files
@@ -4114,7 +4114,6 @@
netgraph_gif inet | netgraph_gif inet6
net/if_gre.c optional gre inet | gre inet6
net/if_ipsec.c optional inet ipsec | inet6 ipsec
-net/if_iso88025subr.c optional token
net/if_lagg.c optional lagg
net/if_loop.c optional loop
net/if_llatbl.c standard
Index: head/sys/net/if.c
===================================================================
--- head/sys/net/if.c
+++ head/sys/net/if.c
@@ -3626,7 +3626,6 @@
case IFT_ETHER:
case IFT_FDDI:
case IFT_XETHER:
- case IFT_ISO88025:
case IFT_L2VLAN:
case IFT_BRIDGE:
case IFT_ARCNET:
Index: head/sys/net/if_iso88025subr.c
===================================================================
--- head/sys/net/if_iso88025subr.c
+++ head/sys/net/if_iso88025subr.c
@@ -1,695 +0,0 @@
-/*-
- * SPDX-License-Identifier: BSD-2-Clause-FreeBSD
- *
- * Copyright (c) 1998, Larry Lile
- * All rights reserved.
- *
- * For latest sources and information on this driver, please
- * go to http://anarchy.stdio.com.
- *
- * Questions, comments or suggestions should be directed to
- * Larry Lile <lile@stdio.com>.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice unmodified, this list of conditions, and the following
- * disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- * $FreeBSD$
- *
- */
-
-/*
- *
- * General ISO 802.5 (Token Ring) support routines
- *
- */
-
-#include "opt_inet.h"
-#include "opt_inet6.h"
-
-#include <sys/param.h>
-#include <sys/systm.h>
-#include <sys/kernel.h>
-#include <sys/malloc.h>
-#include <sys/mbuf.h>
-#include <sys/module.h>
-#include <sys/socket.h>
-#include <sys/sockio.h>
-
-#include <net/if.h>
-#include <net/if_var.h>
-#include <net/if_arp.h>
-#include <net/if_dl.h>
-#include <net/if_llc.h>
-#include <net/if_types.h>
-#include <net/if_llatbl.h>
-
-#include <net/ethernet.h>
-#include <net/netisr.h>
-#include <net/route.h>
-#include <net/bpf.h>
-#include <net/iso88025.h>
-
-#if defined(INET) || defined(INET6)
-#include <netinet/in.h>
-#include <netinet/in_var.h>
-#include <netinet/if_ether.h>
-#endif
-#ifdef INET6
-#include <netinet6/nd6.h>
-#endif
-
-#include <security/mac/mac_framework.h>
-
-static const u_char iso88025_broadcastaddr[ISO88025_ADDR_LEN] =
- { 0xff, 0xff, 0xff, 0xff, 0xff, 0xff };
-
-static int iso88025_resolvemulti (struct ifnet *, struct sockaddr **,
- struct sockaddr *);
-
-#define senderr(e) do { error = (e); goto bad; } while (0)
-
-/*
- * Perform common duties while attaching to interface list
- */
-void
-iso88025_ifattach(struct ifnet *ifp, const u_int8_t *lla, int bpf)
-{
- struct ifaddr *ifa;
- struct sockaddr_dl *sdl;
-
- ifa = NULL;
-
- ifp->if_type = IFT_ISO88025;
- ifp->if_addrlen = ISO88025_ADDR_LEN;
- ifp->if_hdrlen = ISO88025_HDR_LEN;
-
- if_attach(ifp); /* Must be called before additional assignments */
-
- ifp->if_output = iso88025_output;
- ifp->if_input = iso88025_input;
- ifp->if_resolvemulti = iso88025_resolvemulti;
- ifp->if_broadcastaddr = iso88025_broadcastaddr;
-
- if (ifp->if_baudrate == 0)
- ifp->if_baudrate = TR_16MBPS; /* 16Mbit should be a safe default */
- if (ifp->if_mtu == 0)
- ifp->if_mtu = ISO88025_DEFAULT_MTU;
-
- ifa = ifp->if_addr;
- KASSERT(ifa != NULL, ("%s: no lladdr!\n", __func__));
-
- sdl = (struct sockaddr_dl *)ifa->ifa_addr;
- sdl->sdl_type = IFT_ISO88025;
- sdl->sdl_alen = ifp->if_addrlen;
- bcopy(lla, LLADDR(sdl), ifp->if_addrlen);
-
- if (bpf)
- bpfattach(ifp, DLT_IEEE802, ISO88025_HDR_LEN);
-
- return;
-}
-
-/*
- * Perform common duties while detaching a Token Ring interface
- */
-void
-iso88025_ifdetach(ifp, bpf)
- struct ifnet *ifp;
- int bpf;
-{
-
- if (bpf)
- bpfdetach(ifp);
-
- if_detach(ifp);
-
- return;
-}
-
-int
-iso88025_ioctl(struct ifnet *ifp, u_long command, caddr_t data)
-{
- struct ifaddr *ifa;
- struct ifreq *ifr;
- int error;
-
- ifa = (struct ifaddr *) data;
- ifr = (struct ifreq *) data;
- error = 0;
-
- switch (command) {
- case SIOCSIFADDR:
- ifp->if_flags |= IFF_UP;
-
- switch (ifa->ifa_addr->sa_family) {
-#ifdef INET
- case AF_INET:
- ifp->if_init(ifp->if_softc); /* before arpwhohas */
- arp_ifinit(ifp, ifa);
- break;
-#endif /* INET */
- default:
- ifp->if_init(ifp->if_softc);
- break;
- }
- break;
-
- case SIOCGIFADDR:
- bcopy(IF_LLADDR(ifp), &ifr->ifr_addr.sa_data[0],
- ISO88025_ADDR_LEN);
- break;
-
- case SIOCSIFMTU:
- /*
- * Set the interface MTU.
- */
- if (ifr->ifr_mtu > ISO88025_MAX_MTU) {
- error = EINVAL;
- } else {
- ifp->if_mtu = ifr->ifr_mtu;
- }
- break;
- default:
- error = EINVAL; /* XXX netbsd has ENOTTY??? */
- break;
- }
-
- return (error);
-}
-
-/*
- * ISO88025 encapsulation
- */
-int
-iso88025_output(struct ifnet *ifp, struct mbuf *m, const struct sockaddr *dst,
- struct route *ro)
-{
- u_int16_t snap_type = 0;
- int loop_copy = 0, error = 0, rif_len = 0;
- u_char edst[ISO88025_ADDR_LEN];
- struct iso88025_header *th;
- struct iso88025_header gen_th;
- struct sockaddr_dl *sdl = NULL;
- struct rtentry *rt0 = NULL;
- int is_gw = 0;
-
- if (ro != NULL)
- is_gw = (ro->ro_flags & RT_HAS_GW) != 0;
-#ifdef MAC
- error = mac_ifnet_check_transmit(ifp, m);
- if (error)
- senderr(error);
-#endif
-
- if (ifp->if_flags & IFF_MONITOR)
- senderr(ENETDOWN);
- if (!((ifp->if_flags & IFF_UP) &&
- (ifp->if_drv_flags & IFF_DRV_RUNNING)))
- senderr(ENETDOWN);
- getmicrotime(&ifp->if_lastchange);
-
- /* Calculate routing info length based on arp table entry */
- /* XXX any better way to do this ? */
-
- if (rt0 && (sdl = (struct sockaddr_dl *)rt0->rt_gateway))
- if (SDL_ISO88025(sdl)->trld_rcf != 0)
- rif_len = TR_RCF_RIFLEN(SDL_ISO88025(sdl)->trld_rcf);
-
- /* Generate a generic 802.5 header for the packet */
- gen_th.ac = TR_AC;
- gen_th.fc = TR_LLC_FRAME;
- (void)memcpy((caddr_t)gen_th.iso88025_shost, IF_LLADDR(ifp),
- ISO88025_ADDR_LEN);
- if (rif_len) {
- gen_th.iso88025_shost[0] |= TR_RII;
- if (rif_len > 2) {
- gen_th.rcf = SDL_ISO88025(sdl)->trld_rcf;
- (void)memcpy((caddr_t)gen_th.rd,
- (caddr_t)SDL_ISO88025(sdl)->trld_route,
- rif_len - 2);
- }
- }
-
- switch (dst->sa_family) {
-#ifdef INET
- case AF_INET:
- error = arpresolve(ifp, is_gw, m, dst, edst, NULL, NULL);
- if (error)
- return (error == EWOULDBLOCK ? 0 : error);
- snap_type = ETHERTYPE_IP;
- break;
- case AF_ARP:
- {
- struct arphdr *ah;
- ah = mtod(m, struct arphdr *);
- ah->ar_hrd = htons(ARPHRD_IEEE802);
-
- loop_copy = -1; /* if this is for us, don't do it */
-
- switch(ntohs(ah->ar_op)) {
- case ARPOP_REVREQUEST:
- case ARPOP_REVREPLY:
- snap_type = ETHERTYPE_REVARP;
- break;
- case ARPOP_REQUEST:
- case ARPOP_REPLY:
- default:
- snap_type = ETHERTYPE_ARP;
- break;
- }
-
- if (m->m_flags & M_BCAST)
- bcopy(ifp->if_broadcastaddr, edst, ISO88025_ADDR_LEN);
- else
- bcopy(ar_tha(ah), edst, ISO88025_ADDR_LEN);
-
- }
- break;
-#endif /* INET */
-#ifdef INET6
- case AF_INET6:
- error = nd6_resolve(ifp, is_gw, m, dst, edst, NULL, NULL);
- if (error)
- return (error == EWOULDBLOCK ? 0 : error);
- snap_type = ETHERTYPE_IPV6;
- break;
-#endif /* INET6 */
- case AF_UNSPEC:
- {
- const struct iso88025_sockaddr_data *sd;
- /*
- * For AF_UNSPEC sockaddr.sa_data must contain all of the
- * mac information needed to send the packet. This allows
- * full mac, llc, and source routing function to be controlled.
- * llc and source routing information must already be in the
- * mbuf provided, ac/fc are set in sa_data. sockaddr.sa_data
- * should be an iso88025_sockaddr_data structure see iso88025.h
- */
- loop_copy = -1;
- sd = (const struct iso88025_sockaddr_data *)dst->sa_data;
- gen_th.ac = sd->ac;
- gen_th.fc = sd->fc;
- (void)memcpy(edst, sd->ether_dhost, ISO88025_ADDR_LEN);
- (void)memcpy(gen_th.iso88025_shost, sd->ether_shost,
- ISO88025_ADDR_LEN);
- rif_len = 0;
- break;
- }
- default:
- if_printf(ifp, "can't handle af%d\n", dst->sa_family);
- senderr(EAFNOSUPPORT);
- break;
- }
-
- /*
- * Add LLC header.
- */
- if (snap_type != 0) {
- struct llc *l;
- M_PREPEND(m, LLC_SNAPFRAMELEN, M_NOWAIT);
- if (m == NULL)
- senderr(ENOBUFS);
- l = mtod(m, struct llc *);
- l->llc_control = LLC_UI;
- l->llc_dsap = l->llc_ssap = LLC_SNAP_LSAP;
- l->llc_snap.org_code[0] =
- l->llc_snap.org_code[1] =
- l->llc_snap.org_code[2] = 0;
- l->llc_snap.ether_type = htons(snap_type);
- }
-
- /*
- * Add local net header. If no space in first mbuf,
- * allocate another.
- */
- M_PREPEND(m, ISO88025_HDR_LEN + rif_len, M_NOWAIT);
- if (m == NULL)
- senderr(ENOBUFS);
- th = mtod(m, struct iso88025_header *);
- bcopy((caddr_t)edst, (caddr_t)&gen_th.iso88025_dhost, ISO88025_ADDR_LEN);
-
- /* Copy as much of the generic header as is needed into the mbuf */
- memcpy(th, &gen_th, ISO88025_HDR_LEN + rif_len);
-
- /*
- * If a simplex interface, and the packet is being sent to our
- * Ethernet address or a broadcast address, loopback a copy.
- * XXX To make a simplex device behave exactly like a duplex
- * device, we should copy in the case of sending to our own
- * ethernet address (thus letting the original actually appear
- * on the wire). However, we don't do that here for security
- * reasons and compatibility with the original behavior.
- */
- if ((ifp->if_flags & IFF_SIMPLEX) && (loop_copy != -1)) {
- if ((m->m_flags & M_BCAST) || (loop_copy > 0)) {
- struct mbuf *n;
- n = m_copym(m, 0, M_COPYALL, M_NOWAIT);
- (void) if_simloop(ifp, n, dst->sa_family,
- ISO88025_HDR_LEN);
- } else if (bcmp(th->iso88025_dhost, th->iso88025_shost,
- ETHER_ADDR_LEN) == 0) {
- (void) if_simloop(ifp, m, dst->sa_family,
- ISO88025_HDR_LEN);
- return(0); /* XXX */
- }
- }
-
- IFQ_HANDOFF_ADJ(ifp, m, ISO88025_HDR_LEN + LLC_SNAPFRAMELEN, error);
- if (error) {
- printf("iso88025_output: packet dropped QFULL.\n");
- if_inc_counter(ifp, IFCOUNTER_OERRORS, 1);
- }
- return (error);
-
-bad:
- if_inc_counter(ifp, IFCOUNTER_OERRORS, 1);
- if (m)
- m_freem(m);
- return (error);
-}
-
-/*
- * ISO 88025 de-encapsulation
- */
-void
-iso88025_input(ifp, m)
- struct ifnet *ifp;
- struct mbuf *m;
-{
- struct iso88025_header *th;
- struct llc *l;
- int isr;
- int mac_hdr_len;
-
- /*
- * Do consistency checks to verify assumptions
- * made by code past this point.
- */
- if ((m->m_flags & M_PKTHDR) == 0) {
- if_printf(ifp, "discard frame w/o packet header\n");
- if_inc_counter(ifp, IFCOUNTER_IERRORS, 1);
- m_freem(m);
- return;
- }
- if (m->m_pkthdr.rcvif == NULL) {
- if_printf(ifp, "discard frame w/o interface pointer\n");
- if_inc_counter(ifp, IFCOUNTER_IERRORS, 1);
- m_freem(m);
- return;
- }
-
- m = m_pullup(m, ISO88025_HDR_LEN);
- if (m == NULL) {
- if_inc_counter(ifp, IFCOUNTER_IERRORS, 1);
- goto dropanyway;
- }
- th = mtod(m, struct iso88025_header *);
-
- /*
- * Discard packet if interface is not up.
- */
- if (!((ifp->if_flags & IFF_UP) &&
- (ifp->if_drv_flags & IFF_DRV_RUNNING)))
- goto dropanyway;
-
- /*
- * Give bpf a chance at the packet.
- */
- BPF_MTAP(ifp, m);
-
- /*
- * Interface marked for monitoring; discard packet.
- */
- if (ifp->if_flags & IFF_MONITOR) {
- m_freem(m);
- return;
- }
-
-#ifdef MAC
- mac_ifnet_create_mbuf(ifp, m);
-#endif
-
- /*
- * Update interface statistics.
- */
- if_inc_counter(ifp, IFCOUNTER_IBYTES, m->m_pkthdr.len);
- getmicrotime(&ifp->if_lastchange);
-
- /*
- * Discard non local unicast packets when interface
- * is in promiscuous mode.
- */
- if ((ifp->if_flags & IFF_PROMISC) &&
- ((th->iso88025_dhost[0] & 1) == 0) &&
- (bcmp(IF_LLADDR(ifp), (caddr_t) th->iso88025_dhost,
- ISO88025_ADDR_LEN) != 0))
- goto dropanyway;
-
- /*
- * Set mbuf flags for bcast/mcast.
- */
- if (th->iso88025_dhost[0] & 1) {
- if (bcmp(iso88025_broadcastaddr, th->iso88025_dhost,
- ISO88025_ADDR_LEN) == 0)
- m->m_flags |= M_BCAST;
- else
- m->m_flags |= M_MCAST;
- if_inc_counter(ifp, IFCOUNTER_IMCASTS, 1);
- }
-
- mac_hdr_len = ISO88025_HDR_LEN;
- /* Check for source routing info */
- if (th->iso88025_shost[0] & TR_RII)
- mac_hdr_len += TR_RCF_RIFLEN(th->rcf);
-
- /* Strip off ISO88025 header. */
- m_adj(m, mac_hdr_len);
-
- m = m_pullup(m, LLC_SNAPFRAMELEN);
- if (m == NULL) {
- if_inc_counter(ifp, IFCOUNTER_IERRORS, 1);
- goto dropanyway;
- }
- l = mtod(m, struct llc *);
-
- switch (l->llc_dsap) {
- case LLC_SNAP_LSAP: {
- u_int16_t type;
- if ((l->llc_control != LLC_UI) ||
- (l->llc_ssap != LLC_SNAP_LSAP)) {
- if_inc_counter(ifp, IFCOUNTER_NOPROTO, 1);
- goto dropanyway;
- }
-
- if (l->llc_snap.org_code[0] != 0 ||
- l->llc_snap.org_code[1] != 0 ||
- l->llc_snap.org_code[2] != 0) {
- if_inc_counter(ifp, IFCOUNTER_NOPROTO, 1);
- goto dropanyway;
- }
-
- type = ntohs(l->llc_snap.ether_type);
- m_adj(m, LLC_SNAPFRAMELEN);
- switch (type) {
-#ifdef INET
- case ETHERTYPE_IP:
- th->iso88025_shost[0] &= ~(TR_RII);
- isr = NETISR_IP;
- break;
-
- case ETHERTYPE_ARP:
- if (ifp->if_flags & IFF_NOARP)
- goto dropanyway;
- isr = NETISR_ARP;
- break;
-#endif /* INET */
-#ifdef INET6
- case ETHERTYPE_IPV6:
- th->iso88025_shost[0] &= ~(TR_RII);
- isr = NETISR_IPV6;
- break;
-#endif /* INET6 */
- default:
- printf("iso88025_input: unexpected llc_snap ether_type 0x%02x\n", type);
- if_inc_counter(ifp, IFCOUNTER_NOPROTO, 1);
- goto dropanyway;
- }
- break;
- }
-#ifdef ISO
- case LLC_ISO_LSAP:
- switch (l->llc_control) {
- case LLC_UI:
- if_inc_counter(ifp, IFCOUNTER_NOPROTO, 1);
- goto dropanyway;
- break;
- case LLC_XID:
- case LLC_XID_P:
- if(m->m_len < ISO88025_ADDR_LEN)
- goto dropanyway;
- l->llc_window = 0;
- l->llc_fid = 9;
- l->llc_class = 1;
- l->llc_dsap = l->llc_ssap = 0;
- /* Fall through to */
- case LLC_TEST:
- case LLC_TEST_P:
- {
- struct sockaddr sa;
- struct iso88025_sockaddr_data *th2;
- int i;
- u_char c;
-
- c = l->llc_dsap;
-
- if (th->iso88025_shost[0] & TR_RII) { /* XXX */
- printf("iso88025_input: dropping source routed LLC_TEST\n");
- goto dropanyway;
- }
- l->llc_dsap = l->llc_ssap;
- l->llc_ssap = c;
- if (m->m_flags & (M_BCAST | M_MCAST))
- bcopy((caddr_t)IF_LLADDR(ifp),
- (caddr_t)th->iso88025_dhost,
- ISO88025_ADDR_LEN);
- sa.sa_family = AF_UNSPEC;
- sa.sa_len = sizeof(sa);
- th2 = (struct iso88025_sockaddr_data *)sa.sa_data;
- for (i = 0; i < ISO88025_ADDR_LEN; i++) {
- th2->ether_shost[i] = c = th->iso88025_dhost[i];
- th2->ether_dhost[i] = th->iso88025_dhost[i] =
- th->iso88025_shost[i];
- th->iso88025_shost[i] = c;
- }
- th2->ac = TR_AC;
- th2->fc = TR_LLC_FRAME;
- ifp->if_output(ifp, m, &sa, NULL);
- return;
- }
- default:
- printf("iso88025_input: unexpected llc control 0x%02x\n", l->llc_control);
- if_inc_counter(ifp, IFCOUNTER_NOPROTO, 1);
- goto dropanyway;
- break;
- }
- break;
-#endif /* ISO */
- default:
- printf("iso88025_input: unknown dsap 0x%x\n", l->llc_dsap);
- if_inc_counter(ifp, IFCOUNTER_NOPROTO, 1);
- goto dropanyway;
- break;
- }
-
- M_SETFIB(m, ifp->if_fib);
- netisr_dispatch(isr, m);
- return;
-
-dropanyway:
- if_inc_counter(ifp, IFCOUNTER_IQDROPS, 1);
- if (m)
- m_freem(m);
- return;
-}
-
-static int
-iso88025_resolvemulti (ifp, llsa, sa)
- struct ifnet *ifp;
- struct sockaddr **llsa;
- struct sockaddr *sa;
-{
- struct sockaddr_dl *sdl;
-#ifdef INET
- struct sockaddr_in *sin;
-#endif
-#ifdef INET6
- struct sockaddr_in6 *sin6;
-#endif
- u_char *e_addr;
-
- switch(sa->sa_family) {
- case AF_LINK:
- /*
- * No mapping needed. Just check that it's a valid MC address.
- */
- sdl = (struct sockaddr_dl *)sa;
- e_addr = LLADDR(sdl);
- if ((e_addr[0] & 1) != 1) {
- return (EADDRNOTAVAIL);
- }
- *llsa = NULL;
- return (0);
-
-#ifdef INET
- case AF_INET:
- sin = (struct sockaddr_in *)sa;
- if (!IN_MULTICAST(ntohl(sin->sin_addr.s_addr))) {
- return (EADDRNOTAVAIL);
- }
- sdl = link_init_sdl(ifp, *llsa, IFT_ISO88025);
- sdl->sdl_alen = ISO88025_ADDR_LEN;
- e_addr = LLADDR(sdl);
- ETHER_MAP_IP_MULTICAST(&sin->sin_addr, e_addr);
- *llsa = (struct sockaddr *)sdl;
- return (0);
-#endif
-#ifdef INET6
- case AF_INET6:
- sin6 = (struct sockaddr_in6 *)sa;
- if (IN6_IS_ADDR_UNSPECIFIED(&sin6->sin6_addr)) {
- /*
- * An IP6 address of 0 means listen to all
- * of the Ethernet multicast address used for IP6.
- * (This is used for multicast routers.)
- */
- ifp->if_flags |= IFF_ALLMULTI;
- *llsa = NULL;
- return (0);
- }
- if (!IN6_IS_ADDR_MULTICAST(&sin6->sin6_addr)) {
- return (EADDRNOTAVAIL);
- }
- sdl = link_init_sdl(ifp, *llsa, IFT_ISO88025);
- sdl->sdl_alen = ISO88025_ADDR_LEN;
- e_addr = LLADDR(sdl);
- ETHER_MAP_IPV6_MULTICAST(&sin6->sin6_addr, e_addr);
- *llsa = (struct sockaddr *)sdl;
- return (0);
-#endif
-
- default:
- /*
- * Well, the text isn't quite right, but it's the name
- * that counts...
- */
- return (EAFNOSUPPORT);
- }
-
- return (0);
-}
-
-static moduledata_t iso88025_mod = {
- .name = "iso88025",
-};
-
-DECLARE_MODULE(iso88025, iso88025_mod, SI_SUB_PSEUDO, SI_ORDER_ANY);
-MODULE_VERSION(iso88025, 1);
Index: head/sys/net/iso88025.h
===================================================================
--- head/sys/net/iso88025.h
+++ head/sys/net/iso88025.h
@@ -1,176 +0,0 @@
-/*-
- * SPDX-License-Identifier: BSD-2-Clause-FreeBSD
- *
- * Copyright (c) 1998, Larry Lile
- * All rights reserved.
- *
- * For latest sources and information on this driver, please
- * go to http://anarchy.stdio.com.
- *
- * Questions, comments or suggestions should be directed to
- * Larry Lile <lile@stdio.com>.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice unmodified, this list of conditions, and the following
- * disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- * $FreeBSD$
- *
- * Information gathered from tokenring@freebsd, /sys/net/ethernet.h and
- * the Mach token ring driver.
- */
-
-/*
- * Fundamental constants relating to iso 802.5
- */
-
-#ifndef _NET_ISO88025_H_
-#define _NET_ISO88025_H_
-
-/*
- * General ISO 802.5 definitions
- */
-#define ISO88025_ADDR_LEN 6
-#define ISO88025_CF_LEN 2
-#define ISO88025_HDR_LEN (ISO88025_CF_LEN + (ISO88025_ADDR_LEN * 2))
-#define RCF_LEN 2
-#define RIF_MAX_RD 14
-#define RIF_MAX_LEN 16
-
-#define TR_AC 0x10
-#define TR_LLC_FRAME 0x40
-
-#define TR_4MBPS 4000000
-#define TR_16MBPS 16000000
-#define TR_100MBPS 100000000
-
-/*
- * Source routing
- */
-#define TR_RII 0x80
-#define TR_RCF_BCST_MASK 0xe000
-#define TR_RCF_LEN_MASK 0x1f00
-#define TR_RCF_DIR 0x0080
-#define TR_RCF_LF_MASK 0x0070
-
-#define TR_RCF_RIFLEN(x) ((ntohs(x) & TR_RCF_LEN_MASK) >> 8)
-
-/*
- * Minimum and maximum packet payload lengths.
- */
-#define ISO88025_MIN_LEN 0
-#define ISO88025_MAX_LEN_4 4464
-#define ISO88025_MAX_LEN_16 17960
-#define ISO88025_MAX_LEN ISO88025_MAX_LEN_16
-
-/*
- * A macro to validate a length with
- */
-#define ISO88025_IS_VALID_LEN(foo) \
- ((foo) >= ISO88025_MIN_LEN && (foo) <= ISO88025_MAX_LEN)
-
-/* Access Control field */
-#define AC_PRI_MASK 0xe0 /* Priority bits */
-#define AC_TOKEN 0x10 /* Token bit: 0=Token, 1=Frame */
-#define AC_MONITOR 0x08 /* Monitor */
-#define AC_RESV_MASK 0x07 /* Reservation bits */
-
-/* Frame Control field */
-#define FC_FT_MASK 0xc0 /* Frame Type */
-#define FC_FT_MAC 0x00 /* MAC frame */
-#define FC_FT_LLC 0x40 /* LLC frame */
-#define FC_ATTN_MASK 0x0f /* Attention bits */
-#define FC_ATTN_EB 0x01 /* Express buffer */
-#define FC_ATTN_BE 0x02 /* Beacon */
-#define FC_ATTN_CT 0x03 /* Claim token */
-#define FC_ATTN_RP 0x04 /* Ring purge */
-#define FC_ATTN_AMP 0x05 /* Active monitor present */
-#define FC_ATTN_SMP 0x06 /* Standby monitor present */
-
-/* Token Ring destination address */
-#define DA_IG 0x80 /* Individual/group address. */
- /* 0=Individual, 1=Group */
-#define DA_UL 0x40 /* Universal/local address. */
- /* 0=Universal, 1=Local */
-/* Token Ring source address */
-#define SA_RII 0x80 /* Routing information indicator */
-#define SA_IG 0x40 /* Individual/group address */
- /* 0=Group, 1=Individual */
-
-/*
- * ISO 802.5 physical header
- */
-struct iso88025_header {
- u_int8_t ac; /* access control field */
- u_int8_t fc; /* frame control field */
- u_int8_t iso88025_dhost[ISO88025_ADDR_LEN]; /* destination address */
- u_int8_t iso88025_shost[ISO88025_ADDR_LEN]; /* source address */
- u_int16_t rcf; /* route control field */
- u_int16_t rd[RIF_MAX_RD]; /* routing designators */
-} __packed;
-
-struct iso88025_rif {
- u_int16_t rcf; /* route control field */
- u_int16_t rd[RIF_MAX_RD]; /* routing designators */
-} __packed;
-
-struct iso88025_sockaddr_data {
- u_char ether_dhost[ISO88025_ADDR_LEN];
- u_char ether_shost[ISO88025_ADDR_LEN];
- u_char ac;
- u_char fc;
-};
-
-struct iso88025_sockaddr_dl_data {
- u_short trld_rcf;
- u_short *trld_route[RIF_MAX_LEN];
-};
-
-#define ISO88025_MAX(a, b) (((a)>(b))?(a):(b))
-#define SDL_ISO88025(s) ((struct iso88025_sockaddr_dl_data *) \
- ((s)->sdl_data + \
- ISO88025_MAX((s)->sdl_nlen + (s)->sdl_alen + \
- (s)->sdl_slen, 12)))
-
-/*
- * Structure of a 48-bit iso 802.5 address.
- * ( We could also add the 16 bit addresses as a union)
- */
-struct iso88025_addr {
- u_char octet[ISO88025_ADDR_LEN];
-};
-
-#define ISO88025_MAX_MTU 18000
-#define ISO88025_DEFAULT_MTU 1500
-
-#define ISO88025_BPF_UNSUPPORTED 0
-#define ISO88025_BPF_SUPPORTED 1
-
-#ifdef _KERNEL
-void iso88025_ifattach (struct ifnet *, const u_int8_t *, int);
-void iso88025_ifdetach (struct ifnet *, int);
-int iso88025_ioctl (struct ifnet *, u_long, caddr_t );
-int iso88025_output (struct ifnet *, struct mbuf *,
- const struct sockaddr *, struct route *);
-void iso88025_input (struct ifnet *, struct mbuf *);
-#endif /* _KERNEL */
-
-#endif /* !_NET_ISO88025_H_ */
Index: head/sys/netinet/ip_carp.c
===================================================================
--- head/sys/netinet/ip_carp.c
+++ head/sys/netinet/ip_carp.c
@@ -61,7 +61,6 @@
#include <net/if_dl.h>
#include <net/if_llatbl.h>
#include <net/if_types.h>
-#include <net/iso88025.h>
#include <net/route.h>
#include <net/vnet.h>
@@ -1539,17 +1538,6 @@
fh->fddi_shost[5] = sc->sc_vhid;
}
break;
- case IFT_ISO88025: {
- struct iso88025_header *th;
- th = mtod(m, struct iso88025_header *);
- th->iso88025_shost[0] = 3;
- th->iso88025_shost[1] = 0;
- th->iso88025_shost[2] = 0x40 >> (sc->sc_vhid - 1);
- th->iso88025_shost[3] = 0x40000 >> (sc->sc_vhid - 1);
- th->iso88025_shost[4] = 0;
- th->iso88025_shost[5] = 0;
- }
- break;
default:
printf("%s: carp is not supported for the %d interface type\n",
ifp->if_xname, ifp->if_type);
@@ -1732,7 +1720,6 @@
case IFT_L2VLAN:
case IFT_BRIDGE:
case IFT_FDDI:
- case IFT_ISO88025:
break;
default:
error = EOPNOTSUPP;
Index: head/sys/netinet6/in6.c
===================================================================
--- head/sys/netinet6/in6.c
+++ head/sys/netinet6/in6.c
@@ -1971,8 +1971,6 @@
return (64);
case IFT_FDDI: /* RFC2467 */
return (64);
- case IFT_ISO88025: /* RFC2470 (IPv6 over Token Ring) */
- return (64);
case IFT_PPP: /* RFC2472 */
return (64);
case IFT_ARCNET: /* RFC2497 */
Index: head/sys/netinet6/in6_ifattach.c
===================================================================
--- head/sys/netinet6/in6_ifattach.c
+++ head/sys/netinet6/in6_ifattach.c
@@ -275,7 +275,6 @@
case IFT_ETHER:
case IFT_L2VLAN:
case IFT_FDDI:
- case IFT_ISO88025:
case IFT_ATM:
case IFT_IEEE1394:
/* IEEE802/EUI64 cases - what others? */
Index: head/sys/netinet6/nd6.c
===================================================================
--- head/sys/netinet6/nd6.c
+++ head/sys/netinet6/nd6.c
@@ -61,7 +61,6 @@
#include <net/if_arc.h>
#include <net/if_dl.h>
#include <net/if_types.h>
-#include <net/iso88025.h>
#include <net/fddi.h>
#include <net/route.h>
#include <net/vnet.h>
@@ -344,9 +343,6 @@
case IFT_FDDI:
ndi->maxmtu = MIN(FDDIIPMTU, ifp->if_mtu); /* RFC2467 */
break;
- case IFT_ISO88025:
- ndi->maxmtu = MIN(ISO88025_MAX_MTU, ifp->if_mtu);
- break;
default:
ndi->maxmtu = ifp->if_mtu;
break;
@@ -2279,7 +2275,6 @@
case IFT_FDDI:
case IFT_L2VLAN:
case IFT_BRIDGE:
- case IFT_ISO88025:
ETHER_MAP_IPV6_MULTICAST(&dst6->sin6_addr,
desten);
return (0);
Index: head/sys/netinet6/nd6_nbr.c
===================================================================
--- head/sys/netinet6/nd6_nbr.c
+++ head/sys/netinet6/nd6_nbr.c
@@ -1097,7 +1097,6 @@
case IFT_L2VLAN:
case IFT_INFINIBAND:
case IFT_BRIDGE:
- case IFT_ISO88025:
return IF_LLADDR(ifp);
default:
return NULL;
Index: head/sys/nfs/bootp_subr.c
===================================================================
--- head/sys/nfs/bootp_subr.c
+++ head/sys/nfs/bootp_subr.c
@@ -1646,7 +1646,6 @@
switch (ifp->if_alloctype) {
case IFT_ETHER:
case IFT_FDDI:
- case IFT_ISO88025:
break;
default:
continue;
@@ -1677,7 +1676,6 @@
switch (ifp->if_alloctype) {
case IFT_ETHER:
case IFT_FDDI:
- case IFT_ISO88025:
break;
default:
continue;
Index: head/usr.sbin/arp/arp.c
===================================================================
--- head/usr.sbin/arp/arp.c
+++ head/usr.sbin/arp/arp.c
@@ -62,7 +62,6 @@
#include <net/if_dl.h>
#include <net/if_types.h>
#include <net/route.h>
-#include <net/iso88025.h>
#include <netinet/in.h>
#include <netinet/if_ether.h>
@@ -303,7 +302,6 @@
case IFT_INFINIBAND:
case IFT_ISO88023:
case IFT_ISO88024:
- case IFT_ISO88025:
case IFT_L2VLAN:
case IFT_BRIDGE:
return (1);
@@ -592,9 +590,7 @@
{
const char *host;
struct hostent *hp;
- struct iso88025_sockaddr_dl_data *trld;
struct if_nameindex *p;
- int seg;
if (ifnameindex == NULL)
if ((ifnameindex = if_nameindex()) == NULL)
@@ -659,17 +655,6 @@
case IFT_ETHER:
xo_emit(" [{:type/ethernet}]");
break;
- case IFT_ISO88025:
- xo_emit(" [{:type/token-ring}]");
- trld = SDL_ISO88025(sdl);
- if (trld->trld_rcf != 0) {
- xo_emit(" rt=%x", ntohs(trld->trld_rcf));
- for (seg = 0;
- seg < ((TR_RCF_RIFLEN(trld->trld_rcf) - 2 ) / 2);
- seg++)
- xo_emit(":%x", ntohs(*(trld->trld_route[seg])));
- }
- break;
case IFT_FDDI:
xo_emit(" [{:type/fddi}]");
break;
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Thu, Sep 10, 11:21 AM (21 h, 53 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
38609826
Default Alt Text
D14875.id40859.diff (30 KB)
Attached To
Mode
D14875: Remove infrastructure for token-ring networks.
Attached
Detach File
Event Timeline
Log In to Comment