420-indicate-features.patch 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. --- a/hostapd/main.c
  2. +++ b/hostapd/main.c
  3. @@ -15,6 +15,7 @@
  4. #include "utils/common.h"
  5. #include "utils/eloop.h"
  6. #include "utils/uuid.h"
  7. +#include "utils/build_features.h"
  8. #include "crypto/random.h"
  9. #include "crypto/tls.h"
  10. #include "common/version.h"
  11. @@ -668,7 +669,7 @@ int main(int argc, char *argv[])
  12. wpa_supplicant_event = hostapd_wpa_event;
  13. wpa_supplicant_event_global = hostapd_wpa_event_global;
  14. for (;;) {
  15. - c = getopt(argc, argv, "b:Bde:f:hi:KP:STtu:vg:G:");
  16. + c = getopt(argc, argv, "b:Bde:f:hi:KP:STtu:g:G:v::");
  17. if (c < 0)
  18. break;
  19. switch (c) {
  20. @@ -705,6 +706,8 @@ int main(int argc, char *argv[])
  21. break;
  22. #endif /* CONFIG_DEBUG_LINUX_TRACING */
  23. case 'v':
  24. + if (optarg)
  25. + exit(!has_feature(optarg));
  26. show_version();
  27. exit(1);
  28. break;
  29. --- a/wpa_supplicant/main.c
  30. +++ b/wpa_supplicant/main.c
  31. @@ -12,6 +12,7 @@
  32. #endif /* __linux__ */
  33. #include "common.h"
  34. +#include "build_features.h"
  35. #include "fst/fst.h"
  36. #include "wpa_supplicant_i.h"
  37. #include "driver_i.h"
  38. @@ -202,7 +203,7 @@ int main(int argc, char *argv[])
  39. for (;;) {
  40. c = getopt(argc, argv,
  41. - "b:Bc:C:D:de:f:g:G:hH:i:I:KLMm:No:O:p:P:qsTtuvW");
  42. + "b:Bc:C:D:de:f:g:G:hH:i:I:KLMm:No:O:p:P:qsTtuv::W");
  43. if (c < 0)
  44. break;
  45. switch (c) {
  46. @@ -305,8 +306,12 @@ int main(int argc, char *argv[])
  47. break;
  48. #endif /* CONFIG_DBUS */
  49. case 'v':
  50. - printf("%s\n", wpa_supplicant_version);
  51. - exitcode = 0;
  52. + if (optarg) {
  53. + exitcode = !has_feature(optarg);
  54. + } else {
  55. + printf("%s\n", wpa_supplicant_version);
  56. + exitcode = 0;
  57. + }
  58. goto out;
  59. case 'W':
  60. params.wait_for_monitor++;
  61. --- /dev/null
  62. +++ b/src/utils/build_features.h
  63. @@ -0,0 +1,17 @@
  64. +#ifndef BUILD_FEATURES_H
  65. +#define BUILD_FEATURES_H
  66. +
  67. +static inline int has_feature(const char *feat)
  68. +{
  69. +#ifdef IEEE8021X_EAPOL
  70. + if (!strcmp(feat, "eap"))
  71. + return 1;
  72. +#endif
  73. +#ifdef IEEE80211N
  74. + if (!strcmp(feat, "11n"))
  75. + return 1;
  76. +#endif
  77. + return 0;
  78. +}
  79. +
  80. +#endif /* BUILD_FEATURES_H */