Merge pull request #580 from wigyori/cc-libpcap
[15.05/openwrt.git] / package / network / services / hostapd / patches / 420-indicate-features.patch
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  
34  #include "common.h"
35 +#include "build_features.h"
36  #include "fst/fst.h"
37  #include "wpa_supplicant_i.h"
38  #include "driver_i.h"
39 @@ -202,7 +203,7 @@ int main(int argc, char *argv[])
40  
41         for (;;) {
42                 c = getopt(argc, argv,
43 -                          "b:Bc:C:D:de:f:g:G:hH:i:I:KLMm:No:O:p:P:qsTtuvW");
44 +                          "b:Bc:C:D:de:f:g:G:hH:i:I:KLMm:No:O:p:P:qsTtuv::W");
45                 if (c < 0)
46                         break;
47                 switch (c) {
48 @@ -305,8 +306,12 @@ int main(int argc, char *argv[])
49                         break;
50  #endif /* CONFIG_DBUS */
51                 case 'v':
52 -                       printf("%s\n", wpa_supplicant_version);
53 -                       exitcode = 0;
54 +                       if (optarg) {
55 +                               exitcode = !has_feature(optarg);
56 +                       } else {
57 +                               printf("%s\n", wpa_supplicant_version);
58 +                               exitcode = 0;
59 +                       }
60                         goto out;
61                 case 'W':
62                         params.wait_for_monitor++;
63 --- /dev/null
64 +++ b/src/utils/build_features.h
65 @@ -0,0 +1,17 @@
66 +#ifndef BUILD_FEATURES_H
67 +#define BUILD_FEATURES_H
68 +
69 +static inline int has_feature(const char *feat)
70 +{
71 +#ifdef IEEE8021X_EAPOL
72 +       if (!strcmp(feat, "eap"))
73 +               return 1;
74 +#endif
75 +#ifdef IEEE80211N
76 +       if (!strcmp(feat, "11n"))
77 +               return 1;
78 +#endif
79 +       return 0;
80 +}
81 +
82 +#endif /* BUILD_FEATURES_H */