ng_atmllc: remove

This standalone module is the last vestage of ATM support in the tree so
send it on its way.

Reviewed by:	manu, emaste
Relnotes:	yes
Sponsored by:	DARPA
Differential Revision:	https://reviews.freebsd.org/D38880
This commit is contained in:
Brooks Davis 2023-03-09 18:04:21 +00:00
parent af0cc0b223
commit 105a4f7b3c
12 changed files with 1 additions and 448 deletions

View File

@ -89,6 +89,7 @@ OLD_FILES+=usr/share/man/man3/unifunc.3.gz
OLD_FILES+=usr/share/man/man3/unimsg.3.gz
OLD_FILES+=usr/share/man/man3/unisap.3.gz
OLD_FILES+=usr/share/man/man3/unistruct.3.gz
OLD_FILES+=usr/share/man/man4/ng_atmllc.4.gz
OLD_FILES+=usr/share/man/man4/ng_ccatm.4.gz
OLD_FILES+=usr/share/man/man4/ng_sscfu.4.gz
OLD_FILES+=usr/share/man/man4/ng_sscop.4.gz

View File

@ -59,7 +59,6 @@ __FBSDID("$FreeBSD$");
#include <netgraph/ng_UI.h>
#include <netgraph/ng_async.h>
#include <netgraph/ng_atmllc.h>
#include <netgraph/ng_bpf.h>
#include <netgraph/ng_bridge.h>
#include <netgraph/ng_car.h>
@ -133,7 +132,6 @@ struct ng_cookie {
static const struct ng_cookie cookies[] = {
COOKIE(UI),
COOKIE(ASYNC),
COOKIE(ATMLLC),
COOKIE(BPF),
COOKIE(BRIDGE),
COOKIE(CAR),

View File

@ -344,7 +344,6 @@ MAN= aac.4 \
${_nfe.4} \
${_nfsmb.4} \
ng_async.4 \
ng_atmllc.4 \
ng_bpf.4 \
ng_bridge.4 \
ng_btsocket.4 \

View File

@ -1417,7 +1417,6 @@ common networking problems, solved using
.Xr socket 2 ,
.Xr netgraph 3 ,
.Xr ng_async 4 ,
.Xr ng_atmllc 4 ,
.Xr ng_bluetooth 4 ,
.Xr ng_bpf 4 ,
.Xr ng_bridge 4 ,

View File

@ -1,101 +0,0 @@
.\" Copyright (c) 2004 Benno Rice <benno@FreeBSD.org>
.\" All rights reserved.
.\"
.\" 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, 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$
.\"
.Dd March 3, 2023
.Dt NG_ATMLLC 4
.Os
.Sh NAME
.Nm ng_atmllc
.Nd ATM LLC netgraph node type
.Sh SYNOPSIS
.In netgraph/ng_atmllc.h
.Sh DEPRECATION NOTICE
.Nm
is deprecated and may not be available in
.Fx 14.0
and later.
.Sh DESCRIPTION
The
.Nm atmllc
node type translates frames in to and out of ATM LLC encapsulation,
as specified by RFC 1483.
In LLC encapsulation the protocol of a given protocol data unit (PDU) is
specified by an IEEE 802.2 LLC header, possibly followed by an IEEE 802.1a
SubNetwork Attachment Point (SNAP) header.
This node currently handles the Ethernet and FDDI protocols.
.Pp
The node transmits and receives ATM PDUs on the
.Va atm
hook.
Received PDUs are decoded and forwarded to the
.Va ether
or
.Va fddi
hooks as appropriate.
Data received on the
.Va ether
or
.Va fddi
hooks are assumed to be full Ethernet or FDDI packets as appropriate and are
encapsulated into a PDU and transmitted via the
.Va atm
hook.
.Sh HOOKS
This node type supports the following hooks:
.Bl -tag -width ".Va ether"
.It Va atm
ATM connection.
Typically, this hook would be connected to a
.Xr ng_atm 4
node, which handles transmission of ATM PDUs over an ATM device.
.It Va ether
Ethernet connection.
This hook sends and receives Ethernet frames.
This would normally be connected to an
.Xr ng_eiface 4
node if in use.
.It Va fddi
FDDI connection.
This hook sends and receives FDDI frames.
.El
.Sh CONTROL MESSAGES
This node type supports the generic control messages.
.Sh SHUTDOWN
This node shuts down upon receipt of a
.Dv NGM_SHUTDOWN
control message, or when all hooks have been disconnected.
.Sh SEE ALSO
.Xr netgraph 4 ,
.Xr ng_atm 4 ,
.Xr ng_eiface 4 ,
.Xr ngctl 8
.Rs
.%A J. Heinanen
.%T "Multiprotocol Encapsulation over ATM Adaptation Layer 5"
.%O RFC 1483
.Re
.Sh AUTHORS
.An Benno Rice Aq Mt benno@FreeBSD.org

View File

@ -793,7 +793,6 @@ options NETGRAPH_DEBUG # enable extra debugging, this
# affects netgraph(4) and nodes
# Node types
options NETGRAPH_ASYNC
options NETGRAPH_ATMLLC
options NETGRAPH_BLUETOOTH # ng_bluetooth(4)
options NETGRAPH_BLUETOOTH_HCI # ng_hci(4)
options NETGRAPH_BLUETOOTH_L2CAP # ng_l2cap(4)

View File

@ -4233,7 +4233,6 @@ netgraph/netflow/netflow_v9.c optional netgraph_netflow
netgraph/netflow/ng_netflow.c optional netgraph_netflow
netgraph/ng_UI.c optional netgraph_UI
netgraph/ng_async.c optional netgraph_async
netgraph/ng_atmllc.c optional netgraph_atmllc
netgraph/ng_base.c optional netgraph
netgraph/ng_bpf.c optional netgraph_bpf
netgraph/ng_bridge.c optional netgraph_bridge

View File

@ -509,7 +509,6 @@ SCTP_DETAILED_STR_STATS opt_sctp.h # Use per PR-SCTP policy stream stats
NETGRAPH
NETGRAPH_DEBUG opt_netgraph.h
NETGRAPH_ASYNC opt_netgraph.h
NETGRAPH_ATMLLC opt_netgraph.h
NETGRAPH_BLUETOOTH opt_netgraph.h
NETGRAPH_BLUETOOTH_BT3C opt_netgraph.h
NETGRAPH_BLUETOOTH_H4 opt_netgraph.h

View File

@ -5,7 +5,6 @@ SYSDIR?=${SRCTOP}/sys
.include "${SYSDIR}/conf/kern.opts.mk"
SUBDIR= async \
atmllc \
${_bluetooth} \
bpf \
bridge \

View File

@ -1,6 +0,0 @@
# $FreeBSD$
KMOD= ng_atmllc
SRCS= ng_atmllc.c
.include <bsd.kmod.mk>

View File

@ -1,286 +0,0 @@
/*-
* SPDX-License-Identifier: BSD-2-Clause-FreeBSD
*
* Copyright (c) 2003-2004 Benno Rice <benno@eloquent.com.au>
* All Rights Reserved.
*
* 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, 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 ``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 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$
*/
#include <sys/param.h>
#include <sys/systm.h>
#include <sys/kernel.h>
#include <sys/malloc.h>
#include <sys/mbuf.h>
#include <sys/socket.h>
#include <sys/sockio.h>
#include <netgraph/ng_message.h>
#include <netgraph/netgraph.h>
#include <netgraph/ng_atmllc.h>
#include <net/if.h>
#include <net/ethernet.h> /* for M_HASFCS and ETHER_HDR_LEN */
#define NG_ATMLLC_HEADER "\252\252\3\0\200\302"
#define NG_ATMLLC_HEADER_LEN (sizeof(struct atmllc))
#define NG_ATMLLC_TYPE_ETHERNET_FCS 0x0001
#define NG_ATMLLC_TYPE_FDDI_FCS 0x0004
#define NG_ATMLLC_TYPE_ETHERNET_NOFCS 0x0007
#define NG_ATMLLC_TYPE_FDDI_NOFCS 0x000A
struct ng_atmllc_priv {
hook_p atm;
hook_p ether;
hook_p fddi;
};
struct atmllc {
uint8_t llchdr[6]; /* aa.aa.03.00.00.00 */
uint8_t type[2]; /* "ethernet" type */
};
/* ATM_LLC macros: note type code in host byte order */
#define ATM_LLC_TYPE(X) (((X)->type[0] << 8) | ((X)->type[1]))
#define ATM_LLC_SETTYPE(X, V) do { \
(X)->type[0] = ((V) >> 8) & 0xff; \
(X)->type[1] = ((V) & 0xff); \
} while (0)
/* Netgraph methods. */
static ng_constructor_t ng_atmllc_constructor;
static ng_shutdown_t ng_atmllc_shutdown;
static ng_rcvmsg_t ng_atmllc_rcvmsg;
static ng_newhook_t ng_atmllc_newhook;
static ng_rcvdata_t ng_atmllc_rcvdata;
static ng_disconnect_t ng_atmllc_disconnect;
static struct ng_type ng_atmllc_typestruct = {
.version = NG_ABI_VERSION,
.name = NG_ATMLLC_NODE_TYPE,
.constructor = ng_atmllc_constructor,
.rcvmsg = ng_atmllc_rcvmsg,
.shutdown = ng_atmllc_shutdown,
.newhook = ng_atmllc_newhook,
.rcvdata = ng_atmllc_rcvdata,
.disconnect = ng_atmllc_disconnect,
};
NETGRAPH_INIT(atmllc, &ng_atmllc_typestruct);
static int
ng_atmllc_constructor(node_p node)
{
struct ng_atmllc_priv *priv;
gone_in(14, "ng_atmllc");
priv = malloc(sizeof(*priv), M_NETGRAPH, M_WAITOK | M_ZERO);
NG_NODE_SET_PRIVATE(node, priv);
return (0);
}
static int
ng_atmllc_rcvmsg(node_p node, item_p item, hook_p lasthook)
{
struct ng_mesg *msg;
int error;
error = 0;
NGI_GET_MSG(item, msg);
msg->header.flags |= NGF_RESP;
NG_RESPOND_MSG(error, node, item, msg);
return (error);
}
static int
ng_atmllc_shutdown(node_p node)
{
struct ng_atmllc_priv *priv;
priv = NG_NODE_PRIVATE(node);
free(priv, M_NETGRAPH);
NG_NODE_UNREF(node);
return (0);
}
static int
ng_atmllc_newhook(node_p node, hook_p hook, const char *name)
{
struct ng_atmllc_priv *priv;
priv = NG_NODE_PRIVATE(node);
if (strcmp(name, NG_ATMLLC_HOOK_ATM) == 0) {
if (priv->atm != NULL) {
return (EISCONN);
}
priv->atm = hook;
} else if (strcmp(name, NG_ATMLLC_HOOK_ETHER) == 0) {
if (priv->ether != NULL) {
return (EISCONN);
}
priv->ether = hook;
} else if (strcmp(name, NG_ATMLLC_HOOK_FDDI) == 0) {
if (priv->fddi != NULL) {
return (EISCONN);
}
priv->fddi = hook;
} else {
return (EINVAL);
}
return (0);
}
static int
ng_atmllc_rcvdata(hook_p hook, item_p item)
{
struct ng_atmllc_priv *priv;
struct mbuf *m;
struct atmllc *hdr;
hook_p outhook;
u_int padding;
int error;
priv = NG_NODE_PRIVATE(NG_HOOK_NODE(hook));
NGI_GET_M(item, m);
outhook = NULL;
padding = 0;
if (hook == priv->atm) {
/* Ditch the pseudoheader. */
hdr = mtod(m, struct atmllc *);
/* m_adj(m, sizeof(struct atm_pseudohdr)); */
/*
* Make sure we have the LLC and ethernet headers.
* The ethernet header size is slightly larger than the FDDI
* header, which is convenient.
*/
if (m->m_len < sizeof(struct atmllc) + ETHER_HDR_LEN) {
m = m_pullup(m, sizeof(struct atmllc) + ETHER_HDR_LEN);
if (m == NULL) {
NG_FREE_ITEM(item);
return (ENOMEM);
}
}
/* Decode the LLC header. */
hdr = mtod(m, struct atmllc *);
if (ATM_LLC_TYPE(hdr) == NG_ATMLLC_TYPE_ETHERNET_NOFCS) {
m->m_flags &= ~M_HASFCS;
outhook = priv->ether;
padding = 2;
} else if (ATM_LLC_TYPE(hdr) == NG_ATMLLC_TYPE_ETHERNET_FCS) {
m->m_flags |= M_HASFCS;
outhook = priv->ether;
padding = 2;
} else if (ATM_LLC_TYPE(hdr) == NG_ATMLLC_TYPE_FDDI_NOFCS) {
m->m_flags &= ~M_HASFCS;
outhook = priv->fddi;
padding = 3;
} else if (ATM_LLC_TYPE(hdr) == NG_ATMLLC_TYPE_FDDI_FCS) {
m->m_flags |= M_HASFCS;
outhook = priv->fddi;
padding = 3;
} else {
printf("ng_atmllc: unknown type: %x\n",
ATM_LLC_TYPE(hdr));
}
/* Remove the LLC header and any padding*/
m_adj(m, sizeof(struct atmllc) + padding);
} else if (hook == priv->ether) {
/* Add the LLC header */
M_PREPEND(m, NG_ATMLLC_HEADER_LEN + 2, M_NOWAIT);
if (m == NULL) {
printf("ng_atmllc: M_PREPEND failed\n");
NG_FREE_ITEM(item);
return (ENOMEM);
}
hdr = mtod(m, struct atmllc *);
bzero((void *)hdr, sizeof(struct atmllc) + 2);
bcopy(NG_ATMLLC_HEADER, hdr->llchdr, 6);
if ((m->m_flags & M_HASFCS) != 0) {
ATM_LLC_SETTYPE(hdr, NG_ATMLLC_TYPE_ETHERNET_FCS);
} else {
ATM_LLC_SETTYPE(hdr, NG_ATMLLC_TYPE_ETHERNET_NOFCS);
}
outhook = priv->atm;
} else if (hook == priv->fddi) {
/* Add the LLC header */
M_PREPEND(m, NG_ATMLLC_HEADER_LEN + 3, M_NOWAIT);
if (m == NULL) {
printf("ng_atmllc: M_PREPEND failed\n");
NG_FREE_ITEM(item);
return (ENOMEM);
}
hdr = mtod(m, struct atmllc *);
bzero((void *)hdr, sizeof(struct atmllc) + 3);
bcopy(NG_ATMLLC_HEADER, hdr->llchdr, 6);
if ((m->m_flags & M_HASFCS) != 0) {
ATM_LLC_SETTYPE(hdr, NG_ATMLLC_TYPE_FDDI_FCS);
} else {
ATM_LLC_SETTYPE(hdr, NG_ATMLLC_TYPE_FDDI_NOFCS);
}
outhook = priv->atm;
}
if (outhook == NULL) {
NG_FREE_M(m);
NG_FREE_ITEM(item);
return (0);
}
NG_FWD_NEW_DATA(error, item, outhook, m);
return (error);
}
static int
ng_atmllc_disconnect(hook_p hook)
{
node_p node;
struct ng_atmllc_priv *priv;
node = NG_HOOK_NODE(hook);
priv = NG_NODE_PRIVATE(node);
if (hook == priv->atm) {
priv->atm = NULL;
} else if (hook == priv->ether) {
priv->ether = NULL;
} else if (hook == priv->fddi) {
priv->fddi = NULL;
}
if (NG_NODE_NUMHOOKS(node) == 0 && NG_NODE_IS_VALID(node)) {
ng_rmnode_self(node);
}
return (0);
}

View File

@ -1,47 +0,0 @@
/*-
* SPDX-License-Identifier: BSD-2-Clause-FreeBSD
*
* Copyright (c) 2003-2004 Benno Rice <benno@FreeBSD.org>
* All Rights Reserved.
*
* 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, 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 ``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 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$
*/
#ifndef _NETGRAPH_ATMLLC_H_
#define _NETGRAPH_ATMLLC_H_
/* Node type name and magic cookie. */
#define NG_ATMLLC_NODE_TYPE "atmllc"
#define NGM_ATMLLC_COOKIE 1065246274
/* Hook names. */
#define NG_ATMLLC_HOOK_ATM "atm"
#define NG_ATMLLC_HOOK_ETHER "ether"
#define NG_ATMLLC_HOOK_802_4 "ieee8024"
#define NG_ATMLLC_HOOK_802_5 "ieee8025"
#define NG_ATMLLC_HOOK_802_6 "ieee8026"
#define NG_ATMLLC_HOOK_FDDI "fddi"
#define NG_ATMLLC_HOOK_BPDU "bpdu"
#endif /* _NETGRAPH_ATMLLC_H_ */