lede-packages-rs

git clone git://archive.git.mtrnord.blog/MTRNord/lede-packages-rs.git
Log | Files | Refs | README | LICENSE

zabbix_helper_mac80211.c (1825B)


      1 #define _GNU_SOURCE
      2 #include <stdio.h>
      3 #include <string.h>
      4 #include <stdlib.h>
      5 #include <sys/types.h>
      6 #include <dirent.h>
      7 #include <stdbool.h>
      8 
      9 int discovery()
     10 {
     11     DIR *dir;
     12     struct dirent *ent;
     13     bool comma = false;
     14     if ((dir = opendir ("/sys/kernel/debug/ieee80211/")) != NULL) {
     15         printf("{\"data\":[");
     16         while ((ent = readdir (dir)) != NULL) {
     17             if (strcmp(".", ent->d_name) && strcmp("..", ent->d_name)) {
     18                 if (comma)
     19                     printf(",");
     20                 printf("{\"{#PHY}\":\"%s\"}", ent->d_name);
     21                 comma = true;
     22             }
     23         }
     24         printf("]}\n");
     25         closedir(dir);
     26     } else {
     27         perror("");
     28         return EXIT_FAILURE;
     29     }
     30     return EXIT_SUCCESS;
     31 }
     32 
     33 int get_param(char *phy, char *stat)
     34 {
     35     char *filename = NULL;
     36     FILE *f = NULL;
     37     phy = basename(phy);
     38     stat = basename(stat);
     39     if (asprintf(&filename, "/sys/kernel/debug/ieee80211/%s/statistics/%s", phy, stat) > 0)
     40         f = fopen(filename, "r");
     41 
     42     if (f != NULL) {
     43         char temp[256];
     44         while (fgets(temp, 256, f) != NULL)
     45             printf("%s",temp);
     46 
     47         fclose(f);
     48     } else {
     49         perror("");
     50         return EXIT_FAILURE;
     51     }
     52     free(filename);
     53     return EXIT_SUCCESS;
     54 }
     55 
     56 int usage(char *name)
     57 {
     58     fprintf(stderr, "Usage:\n");
     59     fprintf(stderr, " %s discovery\n", name);
     60     fprintf(stderr, " => print mac80211.phydiscovery discovery rule\n");
     61     fprintf(stderr, " %s PHY STAT\n", name);
     62     fprintf(stderr, " => cat /sys/kernel/debug/ieee80211/PHY/statistics/STAT as root\n");
     63     return EXIT_FAILURE;
     64 }
     65 
     66 int main(int argc, char *argv[])
     67 {
     68 
     69     switch (argc) {
     70     case 2:
     71         return discovery();
     72     case 3:
     73         return get_param(argv[1], argv[2]);
     74     default:
     75         return usage(argv[0]);
     76     }
     77 }