From 5cf8a4bc7ffef0e85109f4b81a54c78123c71f90 Mon Sep 17 00:00:00 2001 From: Abhijeet Dharmapurikar Date: Wed, 15 Sep 2010 13:08:00 -0600 Subject: [PATCH] msm_rmnet: merge support for RAWIP msm_rmnet device Add to support for msm_rmnet device using ARPHRD_RAWIP. Change-Id: Ie1e5433f440b26b644cccb18083ef325129f7942 Acked-by: Andrew Richardson Signed-off-by: Abhijeet Dharmapurikar --- include/linux/if_arp.h | 1 + net/ipv6/addrconf.c | 11 +++++++++++ 2 files changed, 12 insertions(+) diff --git a/include/linux/if_arp.h b/include/linux/if_arp.h index 6d722f41ee7..2cc79aeddd8 100644 --- a/include/linux/if_arp.h +++ b/include/linux/if_arp.h @@ -59,6 +59,7 @@ #define ARPHRD_LAPB 516 /* LAPB */ #define ARPHRD_DDCMP 517 /* Digital's DDCMP protocol */ #define ARPHRD_RAWHDLC 518 /* Raw HDLC */ +#define ARPHRD_RAWIP 530 /* Raw IP */ #define ARPHRD_TUNNEL 768 /* IPIP tunnel */ #define ARPHRD_TUNNEL6 769 /* IP6IP6 tunnel */ diff --git a/net/ipv6/addrconf.c b/net/ipv6/addrconf.c index 7d5cb975cc6..f8978419f2d 100644 --- a/net/ipv6/addrconf.c +++ b/net/ipv6/addrconf.c @@ -1579,6 +1579,16 @@ static int ipv6_generate_eui64(u8 *eui, struct net_device *dev) return addrconf_ifid_sit(eui, dev); case ARPHRD_IPGRE: return addrconf_ifid_gre(eui, dev); + case ARPHRD_RAWIP: { + struct in6_addr lladdr; + + if (ipv6_get_lladdr(dev, &lladdr, IFA_F_TENTATIVE)) + get_random_bytes(eui, 8); + else + memcpy(eui, lladdr.s6_addr + 8, 8); + + return 0; + } } return -1; } @@ -2439,6 +2449,7 @@ static void addrconf_dev_config(struct net_device *dev) (dev->type != ARPHRD_FDDI) && (dev->type != ARPHRD_IEEE802_TR) && (dev->type != ARPHRD_ARCNET) && + (dev->type != ARPHRD_RAWIP) && (dev->type != ARPHRD_INFINIBAND)) { /* Alas, we support only Ethernet autoconfiguration. */ return;