mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git
synced 2024-12-29 09:12:07 +00:00
appletalk: remove ipddp driver
After the cops driver is removed, ipddp is now the only CONFIG_DEV_APPLETALK but as far as I can tell, this also has no users and can be removed, making appletalk support purely based on ethertalk, using ethernet hardware. Link: https://lore.kernel.org/netdev/e490dd0c-a65d-4acf-89c6-c06cb48ec880@app.fastmail.com/ Link: https://lore.kernel.org/netdev/9cac4fbd-9557-b0b8-54fa-93f0290a6fb8@schmorgal.com/ Cc: Doug Brown <doug@schmorgal.com> Signed-off-by: Arnd Bergmann <arnd@arndb.de> Acked-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> Link: https://lore.kernel.org/r/20231009141139.1766345-1-arnd@kernel.org Signed-off-by: Jakub Kicinski <kuba@kernel.org>
This commit is contained in:
parent
f0107b864f
commit
1dab47139e
@ -59,7 +59,6 @@ Contents:
|
||||
gtp
|
||||
ila
|
||||
ioam6-sysctl
|
||||
ipddp
|
||||
ip_dynaddr
|
||||
ipsec
|
||||
ip-sysctl
|
||||
|
@ -1,78 +0,0 @@
|
||||
.. SPDX-License-Identifier: GPL-2.0
|
||||
|
||||
=========================================================
|
||||
AppleTalk-IP Decapsulation and AppleTalk-IP Encapsulation
|
||||
=========================================================
|
||||
|
||||
Documentation ipddp.c
|
||||
|
||||
This file is written by Jay Schulist <jschlst@samba.org>
|
||||
|
||||
Introduction
|
||||
------------
|
||||
|
||||
AppleTalk-IP (IPDDP) is the method computers connected to AppleTalk
|
||||
networks can use to communicate via IP. AppleTalk-IP is simply IP datagrams
|
||||
inside AppleTalk packets.
|
||||
|
||||
Through this driver you can either allow your Linux box to communicate
|
||||
IP over an AppleTalk network or you can provide IP gatewaying functions
|
||||
for your AppleTalk users.
|
||||
|
||||
You can currently encapsulate or decapsulate AppleTalk-IP on LocalTalk,
|
||||
EtherTalk and PPPTalk. The only limit on the protocol is that of what
|
||||
kernel AppleTalk layer and drivers are available.
|
||||
|
||||
Each mode requires its own user space software.
|
||||
|
||||
Compiling AppleTalk-IP Decapsulation/Encapsulation
|
||||
==================================================
|
||||
|
||||
AppleTalk-IP decapsulation needs to be compiled into your kernel. You
|
||||
will need to turn on AppleTalk-IP driver support. Then you will need to
|
||||
select ONE of the two options; IP to AppleTalk-IP encapsulation support or
|
||||
AppleTalk-IP to IP decapsulation support. If you compile the driver
|
||||
statically you will only be able to use the driver for the function you have
|
||||
enabled in the kernel. If you compile the driver as a module you can
|
||||
select what mode you want it to run in via a module loading param.
|
||||
ipddp_mode=1 for AppleTalk-IP encapsulation and ipddp_mode=2 for
|
||||
AppleTalk-IP to IP decapsulation.
|
||||
|
||||
Basic instructions for user space tools
|
||||
=======================================
|
||||
|
||||
I will briefly describe the operation of the tools, but you will
|
||||
need to consult the supporting documentation for each set of tools.
|
||||
|
||||
Decapsulation - You will need to download a software package called
|
||||
MacGate. In this distribution there will be a tool called MacRoute
|
||||
which enables you to add routes to the kernel for your Macs by hand.
|
||||
Also the tool MacRegGateWay is included to register the
|
||||
proper IP Gateway and IP addresses for your machine. Included in this
|
||||
distribution is a patch to netatalk-1.4b2+asun2.0a17.2 (available from
|
||||
ftp.u.washington.edu/pub/user-supported/asun/) this patch is optional
|
||||
but it allows automatic adding and deleting of routes for Macs. (Handy
|
||||
for locations with large Mac installations)
|
||||
|
||||
Encapsulation - You will need to download a software daemon called ipddpd.
|
||||
This software expects there to be an AppleTalk-IP gateway on the network.
|
||||
You will also need to add the proper routes to route your Linux box's IP
|
||||
traffic out the ipddp interface.
|
||||
|
||||
Common Uses of ipddp.c
|
||||
----------------------
|
||||
Of course AppleTalk-IP decapsulation and encapsulation, but specifically
|
||||
decapsulation is being used most for connecting LocalTalk networks to
|
||||
IP networks. Although it has been used on EtherTalk networks to allow
|
||||
Macs that are only able to tunnel IP over EtherTalk.
|
||||
|
||||
Encapsulation has been used to allow a Linux box stuck on a LocalTalk
|
||||
network to use IP. It should work equally well if you are stuck on an
|
||||
EtherTalk only network.
|
||||
|
||||
Further Assistance
|
||||
-------------------
|
||||
You can contact me (Jay Schulist <jschlst@samba.org>) with any
|
||||
questions regarding decapsulation or encapsulation. Bradford W. Johnson
|
||||
<johns393@maroon.tc.umn.edu> originally wrote the ipddp.c driver for IP
|
||||
encapsulation in AppleTalk.
|
@ -1459,7 +1459,6 @@ F: drivers/hwmon/applesmc.c
|
||||
APPLETALK NETWORK LAYER
|
||||
L: netdev@vger.kernel.org
|
||||
S: Odd fixes
|
||||
F: drivers/net/appletalk/
|
||||
F: include/linux/atalk.h
|
||||
F: include/uapi/linux/atalk.h
|
||||
F: net/appletalk/
|
||||
|
@ -45,7 +45,6 @@ obj-$(CONFIG_MHI_NET) += mhi_net.o
|
||||
# Networking Drivers
|
||||
#
|
||||
obj-$(CONFIG_ARCNET) += arcnet/
|
||||
obj-$(CONFIG_DEV_APPLETALK) += appletalk/
|
||||
obj-$(CONFIG_CAIF) += caif/
|
||||
obj-$(CONFIG_CAN) += can/
|
||||
obj-$(CONFIG_NET_DSA) += dsa/
|
||||
|
@ -1,72 +0,0 @@
|
||||
# SPDX-License-Identifier: GPL-2.0-only
|
||||
#
|
||||
# Appletalk driver configuration
|
||||
#
|
||||
config ATALK
|
||||
tristate "Appletalk protocol support"
|
||||
select LLC
|
||||
help
|
||||
AppleTalk is the protocol that Apple computers can use to communicate
|
||||
on a network. If your Linux box is connected to such a network and you
|
||||
wish to connect to it, say Y. You will need to use the netatalk package
|
||||
so that your Linux box can act as a print and file server for Macs as
|
||||
well as access AppleTalk printers. Check out
|
||||
<http://www.zettabyte.net/netatalk/> on the WWW for details.
|
||||
EtherTalk is the name used for AppleTalk over Ethernet and the
|
||||
cheaper and slower LocalTalk is AppleTalk over a proprietary Apple
|
||||
network using serial links. EtherTalk and LocalTalk are fully
|
||||
supported by Linux.
|
||||
|
||||
General information about how to connect Linux, Windows machines and
|
||||
Macs is on the WWW at <http://www.eats.com/linux_mac_win.html>. The
|
||||
NET3-4-HOWTO, available from
|
||||
<http://www.tldp.org/docs.html#howto>, contains valuable
|
||||
information as well.
|
||||
|
||||
To compile this driver as a module, choose M here: the module will be
|
||||
called appletalk. You almost certainly want to compile it as a
|
||||
module so you can restart your AppleTalk stack without rebooting
|
||||
your machine. I hear that the GNU boycott of Apple is over, so
|
||||
even politically correct people are allowed to say Y here.
|
||||
|
||||
config DEV_APPLETALK
|
||||
tristate "Appletalk interfaces support"
|
||||
depends on ATALK
|
||||
help
|
||||
AppleTalk is the protocol that Apple computers can use to communicate
|
||||
on a network. If your Linux box is connected to such a network, and wish
|
||||
to do IP over it, or you have a LocalTalk card and wish to use it to
|
||||
connect to the AppleTalk network, say Y.
|
||||
|
||||
config IPDDP
|
||||
tristate "Appletalk-IP driver support"
|
||||
depends on DEV_APPLETALK && ATALK
|
||||
help
|
||||
This allows IP networking for users who only have AppleTalk
|
||||
networking available. This feature is experimental. With this
|
||||
driver, you can encapsulate IP inside AppleTalk (e.g. if your Linux
|
||||
box is stuck on an AppleTalk only network) or decapsulate (e.g. if
|
||||
you want your Linux box to act as an Internet gateway for a zoo of
|
||||
AppleTalk connected Macs). Please see the file
|
||||
<file:Documentation/networking/ipddp.rst> for more information.
|
||||
|
||||
If you say Y here, the AppleTalk-IP support will be compiled into
|
||||
the kernel. In this case, you can either use encapsulation or
|
||||
decapsulation, but not both. With the following two questions, you
|
||||
decide which one you want.
|
||||
|
||||
To compile the AppleTalk-IP support as a module, choose M here: the
|
||||
module will be called ipddp.
|
||||
In this case, you will be able to use both encapsulation and
|
||||
decapsulation simultaneously, by loading two copies of the module
|
||||
and specifying different values for the module option ipddp_mode.
|
||||
|
||||
config IPDDP_ENCAP
|
||||
bool "IP to Appletalk-IP Encapsulation support"
|
||||
depends on IPDDP
|
||||
help
|
||||
If you say Y here, the AppleTalk-IP code will be able to encapsulate
|
||||
IP packets inside AppleTalk frames; this is useful if your Linux box
|
||||
is stuck on an AppleTalk network (which hopefully contains a
|
||||
decapsulator somewhere). Please see
|
||||
<file:Documentation/networking/ipddp.rst> for more information.
|
@ -1,6 +0,0 @@
|
||||
# SPDX-License-Identifier: GPL-2.0-only
|
||||
#
|
||||
# Makefile for drivers/net/appletalk
|
||||
#
|
||||
|
||||
obj-$(CONFIG_IPDDP) += ipddp.o
|
@ -1,345 +0,0 @@
|
||||
/*
|
||||
* ipddp.c: IP to Appletalk-IP Encapsulation driver for Linux
|
||||
* Appletalk-IP to IP Decapsulation driver for Linux
|
||||
*
|
||||
* Authors:
|
||||
* - DDP-IP Encap by: Bradford W. Johnson <johns393@maroon.tc.umn.edu>
|
||||
* - DDP-IP Decap by: Jay Schulist <jschlst@samba.org>
|
||||
*
|
||||
* Derived from:
|
||||
* - Almost all code already existed in net/appletalk/ddp.c I just
|
||||
* moved/reorginized it into a driver file. Original IP-over-DDP code
|
||||
* was done by Bradford W. Johnson <johns393@maroon.tc.umn.edu>
|
||||
* - skeleton.c: A network driver outline for linux.
|
||||
* Written 1993-94 by Donald Becker.
|
||||
* - dummy.c: A dummy net driver. By Nick Holloway.
|
||||
* - MacGate: A user space Daemon for Appletalk-IP Decap for
|
||||
* Linux by Jay Schulist <jschlst@samba.org>
|
||||
*
|
||||
* Copyright 1993 United States Government as represented by the
|
||||
* Director, National Security Agency.
|
||||
*
|
||||
* This software may be used and distributed according to the terms
|
||||
* of the GNU General Public License, incorporated herein by reference.
|
||||
*/
|
||||
|
||||
#include <linux/compat.h>
|
||||
#include <linux/module.h>
|
||||
#include <linux/kernel.h>
|
||||
#include <linux/init.h>
|
||||
#include <linux/netdevice.h>
|
||||
#include <linux/etherdevice.h>
|
||||
#include <linux/ip.h>
|
||||
#include <linux/atalk.h>
|
||||
#include <linux/if_arp.h>
|
||||
#include <linux/slab.h>
|
||||
#include <net/route.h>
|
||||
#include <linux/uaccess.h>
|
||||
|
||||
#include "ipddp.h" /* Our stuff */
|
||||
|
||||
static const char version[] = KERN_INFO "ipddp.c:v0.01 8/28/97 Bradford W. Johnson <johns393@maroon.tc.umn.edu>\n";
|
||||
|
||||
static struct ipddp_route *ipddp_route_list;
|
||||
static DEFINE_SPINLOCK(ipddp_route_lock);
|
||||
|
||||
#ifdef CONFIG_IPDDP_ENCAP
|
||||
static int ipddp_mode = IPDDP_ENCAP;
|
||||
#else
|
||||
static int ipddp_mode = IPDDP_DECAP;
|
||||
#endif
|
||||
|
||||
/* Index to functions, as function prototypes. */
|
||||
static netdev_tx_t ipddp_xmit(struct sk_buff *skb,
|
||||
struct net_device *dev);
|
||||
static int ipddp_create(struct ipddp_route *new_rt);
|
||||
static int ipddp_delete(struct ipddp_route *rt);
|
||||
static struct ipddp_route* __ipddp_find_route(struct ipddp_route *rt);
|
||||
static int ipddp_siocdevprivate(struct net_device *dev, struct ifreq *ifr,
|
||||
void __user *data, int cmd);
|
||||
|
||||
static const struct net_device_ops ipddp_netdev_ops = {
|
||||
.ndo_start_xmit = ipddp_xmit,
|
||||
.ndo_siocdevprivate = ipddp_siocdevprivate,
|
||||
.ndo_set_mac_address = eth_mac_addr,
|
||||
.ndo_validate_addr = eth_validate_addr,
|
||||
};
|
||||
|
||||
static struct net_device * __init ipddp_init(void)
|
||||
{
|
||||
static unsigned version_printed;
|
||||
struct net_device *dev;
|
||||
int err;
|
||||
|
||||
dev = alloc_etherdev(0);
|
||||
if (!dev)
|
||||
return ERR_PTR(-ENOMEM);
|
||||
|
||||
netif_keep_dst(dev);
|
||||
strcpy(dev->name, "ipddp%d");
|
||||
|
||||
if (version_printed++ == 0)
|
||||
printk(version);
|
||||
|
||||
/* Initialize the device structure. */
|
||||
dev->netdev_ops = &ipddp_netdev_ops;
|
||||
|
||||
dev->type = ARPHRD_IPDDP; /* IP over DDP tunnel */
|
||||
dev->mtu = 585;
|
||||
dev->flags |= IFF_NOARP;
|
||||
|
||||
/*
|
||||
* The worst case header we will need is currently a
|
||||
* ethernet header (14 bytes) and a ddp header (sizeof ddpehdr+1)
|
||||
* We send over SNAP so that takes another 8 bytes.
|
||||
*/
|
||||
dev->hard_header_len = 14+8+sizeof(struct ddpehdr)+1;
|
||||
|
||||
err = register_netdev(dev);
|
||||
if (err) {
|
||||
free_netdev(dev);
|
||||
return ERR_PTR(err);
|
||||
}
|
||||
|
||||
/* Let the user now what mode we are in */
|
||||
if(ipddp_mode == IPDDP_ENCAP)
|
||||
printk("%s: Appletalk-IP Encap. mode by Bradford W. Johnson <johns393@maroon.tc.umn.edu>\n",
|
||||
dev->name);
|
||||
if(ipddp_mode == IPDDP_DECAP)
|
||||
printk("%s: Appletalk-IP Decap. mode by Jay Schulist <jschlst@samba.org>\n",
|
||||
dev->name);
|
||||
|
||||
return dev;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* Transmit LLAP/ELAP frame using aarp_send_ddp.
|
||||
*/
|
||||
static netdev_tx_t ipddp_xmit(struct sk_buff *skb, struct net_device *dev)
|
||||
{
|
||||
struct rtable *rtable = skb_rtable(skb);
|
||||
__be32 paddr = 0;
|
||||
struct ddpehdr *ddp;
|
||||
struct ipddp_route *rt;
|
||||
struct atalk_addr *our_addr;
|
||||
|
||||
if (rtable->rt_gw_family == AF_INET)
|
||||
paddr = rtable->rt_gw4;
|
||||
|
||||
spin_lock(&ipddp_route_lock);
|
||||
|
||||
/*
|
||||
* Find appropriate route to use, based only on IP number.
|
||||
*/
|
||||
for(rt = ipddp_route_list; rt != NULL; rt = rt->next)
|
||||
{
|
||||
if(rt->ip == paddr)
|
||||
break;
|
||||
}
|
||||
if(rt == NULL) {
|
||||
spin_unlock(&ipddp_route_lock);
|
||||
return NETDEV_TX_OK;
|
||||
}
|
||||
|
||||
our_addr = atalk_find_dev_addr(rt->dev);
|
||||
|
||||
if(ipddp_mode == IPDDP_DECAP)
|
||||
/*
|
||||
* Pull off the excess room that should not be there.
|
||||
* This is due to a hard-header problem. This is the
|
||||
* quick fix for now though, till it breaks.
|
||||
*/
|
||||
skb_pull(skb, 35-(sizeof(struct ddpehdr)+1));
|
||||
|
||||
/* Create the Extended DDP header */
|
||||
ddp = (struct ddpehdr *)skb->data;
|
||||
ddp->deh_len_hops = htons(skb->len + (1<<10));
|
||||
ddp->deh_sum = 0;
|
||||
|
||||
/*
|
||||
* For Localtalk we need aarp_send_ddp to strip the
|
||||
* long DDP header and place a shot DDP header on it.
|
||||
*/
|
||||
if(rt->dev->type == ARPHRD_LOCALTLK)
|
||||
{
|
||||
ddp->deh_dnet = 0; /* FIXME more hops?? */
|
||||
ddp->deh_snet = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
ddp->deh_dnet = rt->at.s_net; /* FIXME more hops?? */
|
||||
ddp->deh_snet = our_addr->s_net;
|
||||
}
|
||||
ddp->deh_dnode = rt->at.s_node;
|
||||
ddp->deh_snode = our_addr->s_node;
|
||||
ddp->deh_dport = 72;
|
||||
ddp->deh_sport = 72;
|
||||
|
||||
*((__u8 *)(ddp+1)) = 22; /* ddp type = IP */
|
||||
|
||||
skb->protocol = htons(ETH_P_ATALK); /* Protocol has changed */
|
||||
|
||||
dev->stats.tx_packets++;
|
||||
dev->stats.tx_bytes += skb->len;
|
||||
|
||||
aarp_send_ddp(rt->dev, skb, &rt->at, NULL);
|
||||
|
||||
spin_unlock(&ipddp_route_lock);
|
||||
|
||||
return NETDEV_TX_OK;
|
||||
}
|
||||
|
||||
/*
|
||||
* Create a routing entry. We first verify that the
|
||||
* record does not already exist. If it does we return -EEXIST
|
||||
*/
|
||||
static int ipddp_create(struct ipddp_route *new_rt)
|
||||
{
|
||||
struct ipddp_route *rt = kzalloc(sizeof(*rt), GFP_KERNEL);
|
||||
|
||||
if (rt == NULL)
|
||||
return -ENOMEM;
|
||||
|
||||
rt->ip = new_rt->ip;
|
||||
rt->at = new_rt->at;
|
||||
rt->next = NULL;
|
||||
if ((rt->dev = atrtr_get_dev(&rt->at)) == NULL) {
|
||||
kfree(rt);
|
||||
return -ENETUNREACH;
|
||||
}
|
||||
|
||||
spin_lock_bh(&ipddp_route_lock);
|
||||
if (__ipddp_find_route(rt)) {
|
||||
spin_unlock_bh(&ipddp_route_lock);
|
||||
kfree(rt);
|
||||
return -EEXIST;
|
||||
}
|
||||
|
||||
rt->next = ipddp_route_list;
|
||||
ipddp_route_list = rt;
|
||||
|
||||
spin_unlock_bh(&ipddp_route_lock);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* Delete a route, we only delete a FULL match.
|
||||
* If route does not exist we return -ENOENT.
|
||||
*/
|
||||
static int ipddp_delete(struct ipddp_route *rt)
|
||||
{
|
||||
struct ipddp_route **r = &ipddp_route_list;
|
||||
struct ipddp_route *tmp;
|
||||
|
||||
spin_lock_bh(&ipddp_route_lock);
|
||||
while((tmp = *r) != NULL)
|
||||
{
|
||||
if(tmp->ip == rt->ip &&
|
||||
tmp->at.s_net == rt->at.s_net &&
|
||||
tmp->at.s_node == rt->at.s_node)
|
||||
{
|
||||
*r = tmp->next;
|
||||
spin_unlock_bh(&ipddp_route_lock);
|
||||
kfree(tmp);
|
||||
return 0;
|
||||
}
|
||||
r = &tmp->next;
|
||||
}
|
||||
|
||||
spin_unlock_bh(&ipddp_route_lock);
|
||||
return -ENOENT;
|
||||
}
|
||||
|
||||
/*
|
||||
* Find a routing entry, we only return a FULL match
|
||||
*/
|
||||
static struct ipddp_route* __ipddp_find_route(struct ipddp_route *rt)
|
||||
{
|
||||
struct ipddp_route *f;
|
||||
|
||||
for(f = ipddp_route_list; f != NULL; f = f->next)
|
||||
{
|
||||
if(f->ip == rt->ip &&
|
||||
f->at.s_net == rt->at.s_net &&
|
||||
f->at.s_node == rt->at.s_node)
|
||||
return f;
|
||||
}
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
static int ipddp_siocdevprivate(struct net_device *dev, struct ifreq *ifr,
|
||||
void __user *data, int cmd)
|
||||
{
|
||||
struct ipddp_route rcp, rcp2, *rp;
|
||||
|
||||
if (in_compat_syscall())
|
||||
return -EOPNOTSUPP;
|
||||
|
||||
if(!capable(CAP_NET_ADMIN))
|
||||
return -EPERM;
|
||||
|
||||
if (copy_from_user(&rcp, data, sizeof(rcp)))
|
||||
return -EFAULT;
|
||||
|
||||
switch(cmd)
|
||||
{
|
||||
case SIOCADDIPDDPRT:
|
||||
return ipddp_create(&rcp);
|
||||
|
||||
case SIOCFINDIPDDPRT:
|
||||
spin_lock_bh(&ipddp_route_lock);
|
||||
rp = __ipddp_find_route(&rcp);
|
||||
if (rp) {
|
||||
memset(&rcp2, 0, sizeof(rcp2));
|
||||
rcp2.ip = rp->ip;
|
||||
rcp2.at = rp->at;
|
||||
rcp2.flags = rp->flags;
|
||||
}
|
||||
spin_unlock_bh(&ipddp_route_lock);
|
||||
|
||||
if (rp) {
|
||||
if (copy_to_user(data, &rcp2,
|
||||
sizeof(struct ipddp_route)))
|
||||
return -EFAULT;
|
||||
return 0;
|
||||
} else
|
||||
return -ENOENT;
|
||||
|
||||
case SIOCDELIPDDPRT:
|
||||
return ipddp_delete(&rcp);
|
||||
|
||||
default:
|
||||
return -EINVAL;
|
||||
}
|
||||
}
|
||||
|
||||
static struct net_device *dev_ipddp;
|
||||
|
||||
MODULE_LICENSE("GPL");
|
||||
module_param(ipddp_mode, int, 0);
|
||||
|
||||
static int __init ipddp_init_module(void)
|
||||
{
|
||||
dev_ipddp = ipddp_init();
|
||||
return PTR_ERR_OR_ZERO(dev_ipddp);
|
||||
}
|
||||
|
||||
static void __exit ipddp_cleanup_module(void)
|
||||
{
|
||||
struct ipddp_route *p;
|
||||
|
||||
unregister_netdev(dev_ipddp);
|
||||
free_netdev(dev_ipddp);
|
||||
|
||||
while (ipddp_route_list) {
|
||||
p = ipddp_route_list->next;
|
||||
kfree(ipddp_route_list);
|
||||
ipddp_route_list = p;
|
||||
}
|
||||
}
|
||||
|
||||
module_init(ipddp_init_module);
|
||||
module_exit(ipddp_cleanup_module);
|
@ -1,28 +0,0 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0 */
|
||||
/*
|
||||
* ipddp.h: Header for IP-over-DDP driver for Linux.
|
||||
*/
|
||||
|
||||
#ifndef __LINUX_IPDDP_H
|
||||
#define __LINUX_IPDDP_H
|
||||
|
||||
#ifdef __KERNEL__
|
||||
|
||||
#define SIOCADDIPDDPRT (SIOCDEVPRIVATE)
|
||||
#define SIOCDELIPDDPRT (SIOCDEVPRIVATE+1)
|
||||
#define SIOCFINDIPDDPRT (SIOCDEVPRIVATE+2)
|
||||
|
||||
struct ipddp_route
|
||||
{
|
||||
struct net_device *dev; /* Carrier device */
|
||||
__be32 ip; /* IP address */
|
||||
struct atalk_addr at; /* Gateway appletalk address */
|
||||
int flags;
|
||||
struct ipddp_route *next;
|
||||
};
|
||||
|
||||
#define IPDDP_ENCAP 1
|
||||
#define IPDDP_DECAP 2
|
||||
|
||||
#endif /* __KERNEL__ */
|
||||
#endif /* __LINUX_IPDDP_H */
|
@ -246,7 +246,7 @@ source "net/bridge/Kconfig"
|
||||
source "net/dsa/Kconfig"
|
||||
source "net/8021q/Kconfig"
|
||||
source "net/llc/Kconfig"
|
||||
source "drivers/net/appletalk/Kconfig"
|
||||
source "net/appletalk/Kconfig"
|
||||
source "net/x25/Kconfig"
|
||||
source "net/lapb/Kconfig"
|
||||
source "net/phonet/Kconfig"
|
||||
|
30
net/appletalk/Kconfig
Normal file
30
net/appletalk/Kconfig
Normal file
@ -0,0 +1,30 @@
|
||||
# SPDX-License-Identifier: GPL-2.0-only
|
||||
#
|
||||
# Appletalk configuration
|
||||
#
|
||||
config ATALK
|
||||
tristate "Appletalk protocol support"
|
||||
select LLC
|
||||
help
|
||||
AppleTalk is the protocol that Apple computers can use to communicate
|
||||
on a network. If your Linux box is connected to such a network and you
|
||||
wish to connect to it, say Y. You will need to use the netatalk package
|
||||
so that your Linux box can act as a print and file server for Macs as
|
||||
well as access AppleTalk printers. Check out
|
||||
<http://www.zettabyte.net/netatalk/> on the WWW for details.
|
||||
EtherTalk is the name used for AppleTalk over Ethernet and the
|
||||
cheaper and slower LocalTalk is AppleTalk over a proprietary Apple
|
||||
network using serial links. EtherTalk and LocalTalk are fully
|
||||
supported by Linux.
|
||||
|
||||
General information about how to connect Linux, Windows machines and
|
||||
Macs is on the WWW at <http://www.eats.com/linux_mac_win.html>. The
|
||||
NET3-4-HOWTO, available from
|
||||
<http://www.tldp.org/docs.html#howto>, contains valuable
|
||||
information as well.
|
||||
|
||||
To compile this driver as a module, choose M here: the module will be
|
||||
called appletalk. You almost certainly want to compile it as a
|
||||
module so you can restart your AppleTalk stack without rebooting
|
||||
your machine. I hear that the GNU boycott of Apple is over, so
|
||||
even politically correct people are allowed to say Y here.
|
Loading…
Reference in New Issue
Block a user