#include <linux/errno.h>
#include <linux/hdlc.h>
#include <linux/if_arp.h>
#include <linux/inetdevice.h>
#include <linux/init.h>
#include <linux/kernel.h>
#include <linux/module.h>
#include <linux/pkt_sched.h>
#include <linux/poll.h>
#include <linux/rtnetlink.h>
#include <linux/skbuff.h>
#undef DEBUG_HARD_HEADER
#define CISCO_MULTICAST …
#define CISCO_UNICAST …
#define CISCO_KEEPALIVE …
#define CISCO_SYS_INFO …
#define CISCO_ADDR_REQ …
#define CISCO_ADDR_REPLY …
#define CISCO_KEEPALIVE_REQ …
struct hdlc_header { … } __packed;
struct cisco_packet { … } __packed;
#define CISCO_PACKET_LEN …
#define CISCO_BIG_PACKET_LEN …
struct cisco_state { … };
static int cisco_ioctl(struct net_device *dev, struct if_settings *ifs);
static inline struct cisco_state *state(hdlc_device *hdlc)
{ … }
static int cisco_hard_header(struct sk_buff *skb, struct net_device *dev,
u16 type, const void *daddr, const void *saddr,
unsigned int len)
{ … }
static void cisco_keepalive_send(struct net_device *dev, u32 type,
__be32 par1, __be32 par2)
{ … }
static __be16 cisco_type_trans(struct sk_buff *skb, struct net_device *dev)
{ … }
static int cisco_rx(struct sk_buff *skb)
{ … }
static void cisco_timer(struct timer_list *t)
{ … }
static void cisco_start(struct net_device *dev)
{ … }
static void cisco_stop(struct net_device *dev)
{ … }
static struct hdlc_proto proto = …;
static const struct header_ops cisco_header_ops = …;
static int cisco_ioctl(struct net_device *dev, struct if_settings *ifs)
{ … }
static int __init hdlc_cisco_init(void)
{ … }
static void __exit hdlc_cisco_exit(void)
{ … }
module_init(…) …;
module_exit(hdlc_cisco_exit);
MODULE_AUTHOR(…) …;
MODULE_DESCRIPTION(…) …;
MODULE_LICENSE(…) …;