#include <linux/module.h>
#include <linux/wait.h>
#include <linux/atmdev.h>
#include <linux/atm_tcp.h>
#include <linux/bitops.h>
#include <linux/init.h>
#include <linux/slab.h>
#include <linux/uaccess.h>
#include <linux/atomic.h>
extern int atm_init_aal5(struct atm_vcc *vcc);
#define PRIV(dev) …
struct atmtcp_dev_data { … };
#define DEV_LABEL …
#define MAX_VPI_BITS …
#define MAX_VCI_BITS …
static int atmtcp_send_control(struct atm_vcc *vcc,int type,
const struct atmtcp_control *msg,int flag)
{ … }
static int atmtcp_recv_control(const struct atmtcp_control *msg)
{ … }
static void atmtcp_v_dev_close(struct atm_dev *dev)
{ … }
static int atmtcp_v_open(struct atm_vcc *vcc)
{ … }
static void atmtcp_v_close(struct atm_vcc *vcc)
{ … }
static int atmtcp_v_ioctl(struct atm_dev *dev,unsigned int cmd,void __user *arg)
{ … }
static int atmtcp_v_send(struct atm_vcc *vcc,struct sk_buff *skb)
{ … }
static int atmtcp_v_proc(struct atm_dev *dev,loff_t *pos,char *page)
{ … }
static void atmtcp_c_close(struct atm_vcc *vcc)
{ … }
static struct atm_vcc *find_vcc(struct atm_dev *dev, short vpi, int vci)
{ … }
static int atmtcp_c_send(struct atm_vcc *vcc,struct sk_buff *skb)
{ … }
static const struct atmdev_ops atmtcp_v_dev_ops = …;
static const struct atmdev_ops atmtcp_c_dev_ops = …;
static struct atm_dev atmtcp_control_dev = …;
static int atmtcp_create(int itf,int persist,struct atm_dev **result)
{ … }
static int atmtcp_attach(struct atm_vcc *vcc,int itf)
{ … }
static int atmtcp_create_persistent(int itf)
{ … }
static int atmtcp_remove_persistent(int itf)
{ … }
static int atmtcp_ioctl(struct socket *sock, unsigned int cmd, unsigned long arg)
{ … }
static struct atm_ioctl atmtcp_ioctl_ops = …;
static __init int atmtcp_init(void)
{ … }
static void __exit atmtcp_exit(void)
{ … }
MODULE_DESCRIPTION(…) …;
MODULE_LICENSE(…) …;
module_init(…) …;
module_exit(atmtcp_exit);