xref: /openbmc/linux/net/wireless/lib80211.c (revision 7e272fcff6f0a32a3d46e600ea5895f6058f4e2d)
1*7e272fcfSJohn W. Linville /*
2*7e272fcfSJohn W. Linville  * lib80211 -- common bits for IEEE802.11 drivers
3*7e272fcfSJohn W. Linville  *
4*7e272fcfSJohn W. Linville  * Copyright(c) 2008 John W. Linville <linville@tuxdriver.com>
5*7e272fcfSJohn W. Linville  *
6*7e272fcfSJohn W. Linville  */
7*7e272fcfSJohn W. Linville 
8*7e272fcfSJohn W. Linville #include <linux/module.h>
9*7e272fcfSJohn W. Linville #include <linux/ieee80211.h>
10*7e272fcfSJohn W. Linville 
11*7e272fcfSJohn W. Linville #include <net/lib80211.h>
12*7e272fcfSJohn W. Linville 
13*7e272fcfSJohn W. Linville #define DRV_NAME        "lib80211"
14*7e272fcfSJohn W. Linville 
15*7e272fcfSJohn W. Linville #define DRV_DESCRIPTION	"common routines for IEEE802.11 drivers"
16*7e272fcfSJohn W. Linville 
17*7e272fcfSJohn W. Linville MODULE_DESCRIPTION(DRV_DESCRIPTION);
18*7e272fcfSJohn W. Linville MODULE_AUTHOR("John W. Linville <linville@tuxdriver.com>");
19*7e272fcfSJohn W. Linville MODULE_LICENSE("GPL");
20*7e272fcfSJohn W. Linville 
21*7e272fcfSJohn W. Linville const char *escape_ssid(const char *ssid, u8 ssid_len)
22*7e272fcfSJohn W. Linville {
23*7e272fcfSJohn W. Linville 	static char escaped[IEEE80211_MAX_SSID_LEN * 2 + 1];
24*7e272fcfSJohn W. Linville 	const char *s = ssid;
25*7e272fcfSJohn W. Linville 	char *d = escaped;
26*7e272fcfSJohn W. Linville 
27*7e272fcfSJohn W. Linville 	if (is_empty_ssid(ssid, ssid_len)) {
28*7e272fcfSJohn W. Linville 		memcpy(escaped, "<hidden>", sizeof("<hidden>"));
29*7e272fcfSJohn W. Linville 		return escaped;
30*7e272fcfSJohn W. Linville 	}
31*7e272fcfSJohn W. Linville 
32*7e272fcfSJohn W. Linville 	ssid_len = min_t(u8, ssid_len, IEEE80211_MAX_SSID_LEN);
33*7e272fcfSJohn W. Linville 	while (ssid_len--) {
34*7e272fcfSJohn W. Linville 		if (*s == '\0') {
35*7e272fcfSJohn W. Linville 			*d++ = '\\';
36*7e272fcfSJohn W. Linville 			*d++ = '0';
37*7e272fcfSJohn W. Linville 			s++;
38*7e272fcfSJohn W. Linville 		} else {
39*7e272fcfSJohn W. Linville 			*d++ = *s++;
40*7e272fcfSJohn W. Linville 		}
41*7e272fcfSJohn W. Linville 	}
42*7e272fcfSJohn W. Linville 	*d = '\0';
43*7e272fcfSJohn W. Linville 	return escaped;
44*7e272fcfSJohn W. Linville }
45*7e272fcfSJohn W. Linville EXPORT_SYMBOL(escape_ssid);
46*7e272fcfSJohn W. Linville 
47*7e272fcfSJohn W. Linville static int __init ieee80211_init(void)
48*7e272fcfSJohn W. Linville {
49*7e272fcfSJohn W. Linville 	printk(KERN_INFO DRV_NAME ": " DRV_DESCRIPTION "\n");
50*7e272fcfSJohn W. Linville 	return 0;
51*7e272fcfSJohn W. Linville }
52*7e272fcfSJohn W. Linville 
53*7e272fcfSJohn W. Linville static void __exit ieee80211_exit(void)
54*7e272fcfSJohn W. Linville {
55*7e272fcfSJohn W. Linville }
56*7e272fcfSJohn W. Linville 
57*7e272fcfSJohn W. Linville module_init(ieee80211_init);
58*7e272fcfSJohn W. Linville module_exit(ieee80211_exit);
59