Date: Wed, 27 Oct 2004 15:40:13 EDT From: "Rogier R. Mulhuijzen" <lists@bsdchicks.com> To: wpaul@freebsd.org Cc: freebsd-current@freebsd.org Subject: [PATCH] NDISulator fixed to work with wicontrol -L and dstumbler Message-ID: <BasiliX-1.1.0-1098906013417ff99debc6c@artemis.drwilco.net>
next in thread | raw e-mail | index | archive | help
--59b6bb23d26f64278b26095bbbcfd0f8-1098906013 Content-Type: text/plain Subject says it all. I did some poking around in net80211 and dev/if_ndis (shouldn't that be just dev/ndis, like all other if_ modules?) and extended if_ndis.c some so that it answers the ioctl that's used by wicontrol and other userland programs (like dstumbler, part of the net-mgmt/bsd-airtools package/port) to list found 802.11 APs. I do have a few things that made me scratch my head. 1) Currently if there's more APs then can fit in the wreq struct, they're just ignored. There's no way to get a continued list, nor is there any flag to show the requestor that there's more. The wreq struct is a fixed size, and can't be extended without recompiling both kernel and userland. 2) The wi_rates array can only fit 10 rates, but 802.11g has more than 10 rates. Again, this can't be extended without recompiling kernel & userland. Also the 10 is hardcoded in net80211/ieee80211_ioctl.c. (I went ahead and copied it, in a "if it's OK there, it's OK here" kinda mood. But I'll be happy to supply patches for both) 3) When trying to stumble without bringing up the interface at least once, I get a big fat panic. But it seems to not be related to my changes. Still investigating that bit. Patch is attached but can be found at http://www.bsdchicks.com/patches/if_ndis.c.patch too. I'm still a kernel-hacking newb, so please review thouroughly (I managed to trample over random kernel space with early versions... fun fun fun), and fire off any comments you might have. Also my whitespace use might not be standard, since I don't know what the standard is. Greetings, DocWilco --59b6bb23d26f64278b26095bbbcfd0f8-1098906013 Content-Type: application/octet-stream Content-Transfer-Encoding: base64 Content-Description: if_ndis.c.patch Content-Disposition: attachment; filename="if_ndis.c.patch" LS0tIHN5cy9kZXYvaWZfbmRpcy9pZl9uZGlzLmMub3JpZwlXZWQgT2N0IDI3 IDE3OjAxOjU1IDIwMDQKKysrIHN5cy9kZXYvaWZfbmRpcy9pZl9uZGlzLmMJ V2VkIE9jdCAyNyAyMToxMDoxOCAyMDA0CkBAIC0yMDExLDcgKzIwMTEsOSBA QAogCW5kaXNfODAyMTFfYnNzaWRfbGlzdF9leCAqYmw7CiAJbmRpc193bGFu X2Jzc2lkX2V4CSp3YjsKIAlzdHJ1Y3Qgd2lfYXBpbmZvCSphcGk7Ci0JaW50 CQkJZXJyb3IsIGksIGosIGxlbiwgbWF4YXBzOworCXN0cnVjdCB3aV9zY2Fu X3AyX2hkciAqcDI7CisJc3RydWN0IHdpX3NjYW5fcmVzIAkqcmVzOworCWlu dAkJCWVycm9yLCBpLCBqLCBrLCBsZW4sIG1heGFwczsKIAogCXNjID0gaWZw LT5pZl9zb2Z0YzsKIAlpZnIgPSAoc3RydWN0IGlmcmVxICopZGF0YTsKQEAg LTIwNzAsNiArMjA3Miw2OSBAQAogCQkJYXBpKys7CiAJCQl3YiA9IChuZGlz X3dsYW5fYnNzaWRfZXggKikoKGNoYXIgKil3YiArIHdiLT5ud2J4X2xlbik7 CiAJCX0KKwkJZnJlZShibCwgTV9ERVZCVUYpOworCQllcnJvciA9IGNvcHlv dXQoJndyZXEsIGlmci0+aWZyX2RhdGEsIHNpemVvZih3cmVxKSk7CisJCWJy ZWFrOworCWNhc2UgV0lfUklEX1NDQU5fUkVTOgorCQlsZW4gPSAwOworCQll cnJvciA9IG5kaXNfc2V0X2luZm8oc2MsIE9JRF84MDJfMTFfQlNTSURfTElT VF9TQ0FOLAorCQkgICAgTlVMTCwgJmxlbik7CisJCWlmIChlcnJvciA9PSAw KQorCQkJdHNsZWVwKCZlcnJvciwgUFBBVVNFfFBDQVRDSCwgInNzaWRzY2Fu IiwgaHogKiAyKTsKKwkJbGVuID0gMDsKKwkJZXJyb3IgPSBuZGlzX2dldF9p bmZvKHNjLCBPSURfODAyXzExX0JTU0lEX0xJU1QsIE5VTEwsICZsZW4pOwor CQlpZiAoZXJyb3IgIT0gRU5PU1BDKSAKKwkJCWJyZWFrOworCQlibCA9IG1h bGxvYyhsZW4sIE1fREVWQlVGLCBNX1dBSVRPS3xNX1pFUk8pOworCQllcnJv ciA9IG5kaXNfZ2V0X2luZm8oc2MsIE9JRF84MDJfMTFfQlNTSURfTElTVCwg YmwsICZsZW4pOworCQlpZiAoZXJyb3IpIHsKKwkJCWZyZWUoYmwsIE1fREVW QlVGKTsKKwkJCWJyZWFrOworCQl9CisKKwkJayA9IDA7CisJCXAyID0gKHN0 cnVjdCB3aV9zY2FuX3AyX2hkciAqKXdyZXEud2lfdmFsOworCQlyZXMgPSAo dm9pZCAqKSZwMlsxXTsKKwkJd2IgPSBibC0+bmJseF9ic3NpZDsKKwkJd2hp bGUgKChjYWRkcl90KShyZXMgKyAxKSA8IChjYWRkcl90KSgmd3JlcSArIDEp ICYmIGsgPCBibC0+bmJseF9pdGVtcykgeworCQkJYnplcm8ocmVzLCBzaXpl b2YoKnJlcykpOworCQkJYmNvcHkoJndiLT5ud2J4X21hY2FkZHIsICZyZXMt PndpX2Jzc2lkLAorCQkJICAgIHNpemVvZihyZXMtPndpX2Jzc2lkKSk7CisJ CQlyZXMtPndpX3NzaWRfbGVuID0gd2ItPm53Ynhfc3NpZC5uc19zc2lkbGVu OworCQkJYmNvcHkoJndiLT5ud2J4X3NzaWQubnNfc3NpZCwgJnJlcy0+d2lf c3NpZCwgcmVzLT53aV9zc2lkX2xlbik7CisJCQlpZiAod2ItPm53YnhfcHJp dmFjeSkgeworCQkJCXJlcy0+d2lfY2FwaW5mbyB8PSBJRUVFODAyMTFfQ0FQ SU5GT19QUklWQUNZOworCQkJfQorCQkJLyogWFhYIFdoZXJlIGNhbiB3ZSBn ZXQgbm9pc2UgaW5mb3JtYXRpb24/ICovCisJCQlyZXMtPndpX3NpZ25hbCA9 IHdiLT5ud2J4X3Jzc2kgKyAxNDk7CS8qIFhYWCAqLworCQkJcmVzLT53aV9j aGFuID0KKwkJCSAgICBpZWVlODAyMTFfbWh6MmllZWUod2ItPm53YnhfY29u ZmlnLm5jX2RzY29uZmlnIC8KKwkJCSAgICAxMDAwLCAwKTsKKwkJCS8qIElu ICJhdXRvIiBpbmZyYXN0cnVjdHVyZSBtb2RlLCB0aGlzIGlzIHVzZWxlc3Mu ICovCisJCQlpZiAod2ItPm53YnhfbmV0aW5mcmEgPT0gTkRJU184MDIxMV9O RVRfSU5GUkFfSUJTUykKKwkJCQlyZXMtPndpX2NhcGluZm8gfD0gSUVFRTgw MjExX0NBUElORk9fSUJTUzsKKwkJCWlmICh3Yi0+bndieF9sZW4gPiBzaXpl b2YobmRpc193bGFuX2Jzc2lkKSkgeworCQkJCWogPSBzaXplb2YobmRpc184 MDIxMV9yYXRlc19leCk7CisJCQkJLyogaGFuZGxlIG90aGVyIGV4dGVuZGVk IHRoaW5ncyAqLworCQkJfSBlbHNlCisJCQkJaiA9IHNpemVvZihuZGlzXzgw MjExX3JhdGVzKTsKKwkJCWZvciAoaSA9IHJlcy0+d2lfcmF0ZSA9IDA7IGkg PCBqOyBpKyspCisJCQkJcmVzLT53aV9yYXRlID0gTUFYKHJlcy0+d2lfcmF0 ZSwKKwkJCQkgICAgd2ItPm53Ynhfc3VwcG9ydGVkcmF0ZXNbaV0pOworCQkJ bWVtY3B5KHJlcy0+d2lfc3JhdGVzLCB3Yi0+bndieF9zdXBwb3J0ZWRyYXRl cywKKwkJCQlNSU4oaiwgMTApKTsKKwkJCWlmIChqIDwgMTApCisJCQkJcmVz LT53aV9zcmF0ZXNbal0gPSAwOworCQkJcmVzLT53aV9yc3ZkID0gMDsKKwkJ CXJlcysrOworCQkJd2IgPSAobmRpc193bGFuX2Jzc2lkX2V4ICopKChjaGFy ICopd2IgKyB3Yi0+bndieF9sZW4pOworCQkJaysrOworCQl9CisJCXAyLT53 aV9yc3ZkID0gMDsKKwkJcDItPndpX3JlYXNvbiA9IGs7CisJCXdyZXEud2lf bGVuID0gKHNpemVvZigqcDIpICsgc2l6ZW9mKCpyZXMpICogaykgLyAyOwor CQkvKiBYWFg6IHRoaXMgaXMgX3NvXyBoYWNraXNoLCBzaG91bGQgcHJvYmFi bHkgYmUgZml4ZWQgaW4gd2ljb250cm9sICovCisJCXdyZXEud2lfbGVuKys7 CiAJCWZyZWUoYmwsIE1fREVWQlVGKTsKIAkJZXJyb3IgPSBjb3B5b3V0KCZ3 cmVxLCBpZnItPmlmcl9kYXRhLCBzaXplb2Yod3JlcSkpOwogCQlicmVhazsK --59b6bb23d26f64278b26095bbbcfd0f8-1098906013--
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?BasiliX-1.1.0-1098906013417ff99debc6c>