Commit 5f77076d authored by Remi Denis-Courmont's avatar Remi Denis-Courmont Committed by David S. Miller
Browse files

Phonet: provide MAC header operations

parent 107d0d9b
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -12,3 +12,7 @@
/* 6 bytes header + 65535 bytes payload */
#define PHONET_MAX_MTU		65541
#define PHONET_DEV_MTU		PHONET_MAX_MTU

#ifdef __KERNEL__
extern struct header_ops phonet_header_ops;
#endif
+29 −0
Original line number Diff line number Diff line
@@ -99,6 +99,35 @@ static struct net_proto_family phonet_proto_family = {
	.owner = THIS_MODULE,
};

/* Phonet device header operations */
static int pn_header_create(struct sk_buff *skb, struct net_device *dev,
				unsigned short type, const void *daddr,
				const void *saddr, unsigned len)
{
	u8 *media = skb_push(skb, 1);

	if (type != ETH_P_PHONET)
		return -1;

	if (!saddr)
		saddr = dev->dev_addr;
	*media = *(const u8 *)saddr;
	return 1;
}

static int pn_header_parse(const struct sk_buff *skb, unsigned char *haddr)
{
	const u8 *media = skb_mac_header(skb);
	*haddr = *media;
	return 1;
}

struct header_ops phonet_header_ops = {
	.create = pn_header_create,
	.parse = pn_header_parse,
};
EXPORT_SYMBOL(phonet_header_ops);

/*
 * Prepends an ISI header and sends a datagram.
 */