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