mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git
synced 2025-01-01 10:42:11 +00:00
net: core: move mac_pton() to lib/net_utils.c
Since we have at least one user of this function outside of CONFIG_NET scope, we have to provide this function independently. The proposed solution is to move it under lib/net_utils.c with corresponding configuration variable and select wherever it is needed. Signed-off-by: Andy Shevchenko <andy.shevchenko@gmail.com> Reported-by: Arnd Bergmann <arnd@arndb.de> Acked-by: David S. Miller <davem@davemloft.net> Acked-by: Arnd Bergmann <arnd@arndb.de> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
143e9c76c4
commit
4cd5773a2a
@ -480,6 +480,7 @@ config BMP085_SPI
|
|||||||
|
|
||||||
config PCH_PHUB
|
config PCH_PHUB
|
||||||
tristate "Intel EG20T PCH/LAPIS Semicon IOH(ML7213/ML7223/ML7831) PHUB"
|
tristate "Intel EG20T PCH/LAPIS Semicon IOH(ML7213/ML7223/ML7831) PHUB"
|
||||||
|
select GENERIC_NET_UTILS
|
||||||
depends on PCI
|
depends on PCI
|
||||||
help
|
help
|
||||||
This driver is for PCH(Platform controller Hub) PHUB(Packet Hub) of
|
This driver is for PCH(Platform controller Hub) PHUB(Packet Hub) of
|
||||||
|
@ -40,6 +40,7 @@
|
|||||||
#include <linux/slab.h>
|
#include <linux/slab.h>
|
||||||
#include <linux/console.h>
|
#include <linux/console.h>
|
||||||
#include <linux/moduleparam.h>
|
#include <linux/moduleparam.h>
|
||||||
|
#include <linux/kernel.h>
|
||||||
#include <linux/string.h>
|
#include <linux/string.h>
|
||||||
#include <linux/netpoll.h>
|
#include <linux/netpoll.h>
|
||||||
#include <linux/inet.h>
|
#include <linux/inet.h>
|
||||||
|
@ -30,7 +30,6 @@ static inline struct ethhdr *eth_hdr(const struct sk_buff *skb)
|
|||||||
|
|
||||||
int eth_header_parse(const struct sk_buff *skb, unsigned char *haddr);
|
int eth_header_parse(const struct sk_buff *skb, unsigned char *haddr);
|
||||||
|
|
||||||
int mac_pton(const char *s, u8 *mac);
|
|
||||||
extern ssize_t sysfs_format_mac(char *buf, const unsigned char *addr, int len);
|
extern ssize_t sysfs_format_mac(char *buf, const unsigned char *addr, int len);
|
||||||
|
|
||||||
#endif /* _LINUX_IF_ETHER_H */
|
#endif /* _LINUX_IF_ETHER_H */
|
||||||
|
@ -450,6 +450,8 @@ static inline char * __deprecated pack_hex_byte(char *buf, u8 byte)
|
|||||||
extern int hex_to_bin(char ch);
|
extern int hex_to_bin(char ch);
|
||||||
extern int __must_check hex2bin(u8 *dst, const char *src, size_t count);
|
extern int __must_check hex2bin(u8 *dst, const char *src, size_t count);
|
||||||
|
|
||||||
|
int mac_pton(const char *s, u8 *mac);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* General tracing related utility functions - trace_printk(),
|
* General tracing related utility functions - trace_printk(),
|
||||||
* tracing_on/tracing_off and tracing_start()/tracing_stop
|
* tracing_on/tracing_off and tracing_start()/tracing_stop
|
||||||
|
@ -22,6 +22,9 @@ config GENERIC_STRNCPY_FROM_USER
|
|||||||
config GENERIC_STRNLEN_USER
|
config GENERIC_STRNLEN_USER
|
||||||
bool
|
bool
|
||||||
|
|
||||||
|
config GENERIC_NET_UTILS
|
||||||
|
bool
|
||||||
|
|
||||||
config GENERIC_FIND_FIRST_BIT
|
config GENERIC_FIND_FIRST_BIT
|
||||||
bool
|
bool
|
||||||
|
|
||||||
|
@ -137,6 +137,8 @@ obj-$(CONFIG_DDR) += jedec_ddr_data.o
|
|||||||
obj-$(CONFIG_GENERIC_STRNCPY_FROM_USER) += strncpy_from_user.o
|
obj-$(CONFIG_GENERIC_STRNCPY_FROM_USER) += strncpy_from_user.o
|
||||||
obj-$(CONFIG_GENERIC_STRNLEN_USER) += strnlen_user.o
|
obj-$(CONFIG_GENERIC_STRNLEN_USER) += strnlen_user.o
|
||||||
|
|
||||||
|
obj-$(CONFIG_GENERIC_NET_UTILS) += net_utils.o
|
||||||
|
|
||||||
obj-$(CONFIG_STMP_DEVICE) += stmp_device.o
|
obj-$(CONFIG_STMP_DEVICE) += stmp_device.o
|
||||||
|
|
||||||
libfdt_files = fdt.o fdt_ro.o fdt_wip.o fdt_rw.o fdt_sw.o fdt_strerror.o
|
libfdt_files = fdt.o fdt_ro.o fdt_wip.o fdt_rw.o fdt_sw.o fdt_strerror.o
|
||||||
|
26
lib/net_utils.c
Normal file
26
lib/net_utils.c
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
#include <linux/string.h>
|
||||||
|
#include <linux/if_ether.h>
|
||||||
|
#include <linux/ctype.h>
|
||||||
|
#include <linux/kernel.h>
|
||||||
|
|
||||||
|
int mac_pton(const char *s, u8 *mac)
|
||||||
|
{
|
||||||
|
int i;
|
||||||
|
|
||||||
|
/* XX:XX:XX:XX:XX:XX */
|
||||||
|
if (strlen(s) < 3 * ETH_ALEN - 1)
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
/* Don't dirty result unless string is valid MAC. */
|
||||||
|
for (i = 0; i < ETH_ALEN; i++) {
|
||||||
|
if (!isxdigit(s[i * 3]) || !isxdigit(s[i * 3 + 1]))
|
||||||
|
return 0;
|
||||||
|
if (i != ETH_ALEN - 1 && s[i * 3 + 2] != ':')
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
for (i = 0; i < ETH_ALEN; i++) {
|
||||||
|
mac[i] = (hex_to_bin(s[i * 3]) << 4) | hex_to_bin(s[i * 3 + 1]);
|
||||||
|
}
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
EXPORT_SYMBOL(mac_pton);
|
@ -5,6 +5,7 @@
|
|||||||
menuconfig NET
|
menuconfig NET
|
||||||
bool "Networking support"
|
bool "Networking support"
|
||||||
select NLATTR
|
select NLATTR
|
||||||
|
select GENERIC_NET_UTILS
|
||||||
---help---
|
---help---
|
||||||
Unless you really know what you are doing, you should say Y here.
|
Unless you really know what you are doing, you should say Y here.
|
||||||
The reason is that some programs need kernel networking support even
|
The reason is that some programs need kernel networking support even
|
||||||
|
@ -12,6 +12,7 @@
|
|||||||
#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
|
#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
|
||||||
|
|
||||||
#include <linux/moduleparam.h>
|
#include <linux/moduleparam.h>
|
||||||
|
#include <linux/kernel.h>
|
||||||
#include <linux/netdevice.h>
|
#include <linux/netdevice.h>
|
||||||
#include <linux/etherdevice.h>
|
#include <linux/etherdevice.h>
|
||||||
#include <linux/string.h>
|
#include <linux/string.h>
|
||||||
|
@ -338,25 +338,3 @@ void inet_proto_csum_replace16(__sum16 *sum, struct sk_buff *skb,
|
|||||||
csum_unfold(*sum)));
|
csum_unfold(*sum)));
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL(inet_proto_csum_replace16);
|
EXPORT_SYMBOL(inet_proto_csum_replace16);
|
||||||
|
|
||||||
int mac_pton(const char *s, u8 *mac)
|
|
||||||
{
|
|
||||||
int i;
|
|
||||||
|
|
||||||
/* XX:XX:XX:XX:XX:XX */
|
|
||||||
if (strlen(s) < 3 * ETH_ALEN - 1)
|
|
||||||
return 0;
|
|
||||||
|
|
||||||
/* Don't dirty result unless string is valid MAC. */
|
|
||||||
for (i = 0; i < ETH_ALEN; i++) {
|
|
||||||
if (!isxdigit(s[i * 3]) || !isxdigit(s[i * 3 + 1]))
|
|
||||||
return 0;
|
|
||||||
if (i != ETH_ALEN - 1 && s[i * 3 + 2] != ':')
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
for (i = 0; i < ETH_ALEN; i++) {
|
|
||||||
mac[i] = (hex_to_bin(s[i * 3]) << 4) | hex_to_bin(s[i * 3 + 1]);
|
|
||||||
}
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
EXPORT_SYMBOL(mac_pton);
|
|
||||||
|
Loading…
Reference in New Issue
Block a user