int main(int argc, char** argv) { int cmd; const char *port = "11210"; const char *host = "localhost"; const char *user = NULL; const char *pass = NULL; int secure = 0; char *ptr; SSL_CTX* ctx; BIO* bio; int result = EXIT_FAILURE; /* Initialize the socket subsystem */ cb_initialize_sockets(); while ((cmd = getopt(argc, argv, "h:p:u:P:s")) != EOF) { switch (cmd) { case 'h' : host = optarg; ptr = strchr(optarg, ':'); if (ptr != NULL) { *ptr = '\0'; port = ptr + 1; } break; case 'p': port = optarg; break; case 'u' : user = optarg; break; case 'P': pass = optarg; break; case 's': secure = 1; break; default: return usage(); } } if (create_ssl_connection(&ctx, &bio, host, port, user, pass, secure) != 0) { return 1; } /* Need at least two more arguments: get/set and a property name. */ if (optind + 1 >= argc) { return usage(); } else { const char* property = argv[optind+1]; if (strcmp(argv[optind], "get") == 0) { result = ioctl_get(bio, property); } else if (strcmp(argv[optind], "set") == 0) { const char* value = (optind + 2 >= argc) ? argv[optind+2] : NULL; result = ioctl_set(bio, property, value); } } BIO_free_all(bio); if (secure) { SSL_CTX_free(ctx); } return result; }
int main(int argc, char *argv[]) { int sockfd; int count=0, val; unsigned int ii=0,OID,len; struct iwreq iwr; struct iw_freq ifrq; unsigned char buffer[200], sub_oid=0; unsigned int num_args=0, min =0, fixed =0, max=0; int status; if (argc == 2) { printf("nl80211_util:Invalid number of arguments\n"); return 1; } else if(argc == 1) { printf("NL80211 Private IOCTL Application\n"); printf("Usage: ./nl80211_util <interface name> <ioctl name> <input> \n"); return 1; } len = strlen(argv[2]); num_args = argc - 3; memset(buffer, 0, 200); if((strncmp(argv[2], "set", 3) == 0) && argc > 3) { if(strncmp(argv[2], "set_short_gi", strlen("set_short_gi")) == 0) { buffer[0] = IEEE80211_PARAM_SHORT_GI; buffer[4] = atoi(argv[3]); if(buffer[4] < 0 || buffer[4] > 3) { printf("Enter a valid value\n"); printf("Usage: 0 - Disable Short_Gi\n"); printf("Usage: 1 - Enaable Short_Gi for 20MHz\n"); printf("Usage: 2 - Enaable Short_Gi for 40MHz\n"); printf("Usage: 3 - Enaable Short_Gi for both 20/40MHz\n"); return 0; } ioctl_set(buffer, argv); return 0; } else if(strncmp(argv[2], "set_mode", strlen("set_mode")) == 0) { buffer[0] = IEEE80211_PARAM_MODE; //sub_oid = 2; buffer[1] = strlen(argv[3]); if(buffer[1]) { memcpy(&buffer[5], argv[3], strlen(argv[3])); ioctl_set(buffer, argv); //break; } else { printf("Please Specify the mode to Set\n"); } return 0; } else if(strncmp(argv[2], "set_rate", strlen("set_rate")) == 0) { buffer[0] = IEEE80211_PARAM_RATE; buffer[1] = 1; buffer[4] = atoi(argv[3]); //printf("The rate is %d\n", buffer[1]); ioctl_set(buffer, argv); return 0; } else if(strncmp(argv[2], "set_deauth", strlen("set_deauth")) == 0) { buffer[0] = IEEE80211_PARAM_ROAMING; buffer[1] = 1; buffer[4] = atoi(argv[3]); ioctl_set(buffer, argv); return 0; } else if(strncmp(argv[2], "set_preamble", strlen("set_preamble")) == 0) { buffer[0] = IEEE80211_PARAM_SHPREAMBLE; if(strncmp(argv[3], "auto", strlen("auto")) == 0) { buffer[1] = 1; printf("The preamble value set is auto %d\n", buffer[1]); } else { printf("The preamble value set is long %d\n", buffer[1]); buffer[1] = 0; } ioctl_set(buffer, argv); return 0; } else if(strncmp(argv[2], "set_bmiss_th", strlen("set_bmiss_th")) == 0) { buffer[0] = IEEE80211_PARAM_BEACON_MISS_THRESH; buffer[1] = atoi(argv[3]); printf("The threshold val is %d\n", buffer[1]); ioctl_set(buffer, argv); return 0; } #if 0 else if(strncmp(argv[2], "set_country", strlen("set_country")) == 0) { buffer[0] = IEEE80211_PARAM_CHANGE_COUNTRY_IE; } else if(strncmp(argv[2], "set_hide_ssid", strlen("set_hide_ssid")) == 0) { buffer[0] = IEEE80211_PARAM_HIDESSID; } else if(strncmp(argv[2], "set_wmm", strlen("set_wmm")) == 0) { buffer[0] = IEEE80211_PARAM_WMM; } else if(strncmp(argv[2], "set_ampdu_dens",len) == 0) { buffer[0] = IEEE80211_PARAM_AMPDU_DENSITY; } else if(strncmp(argv[2], "set_pureg", strlen("set_pureg")) == 0) { buffer[0] = IEEE80211_PARAM_PUREG; } else if(strncmp(argv[2], "set_puren", strlen("set_puren")) == 0) { buffer[0] = IEEE80211_PARAM_PUREN; } #endif else { printf("Invalid set Ioctl cmd\n"); printf("In valid Set IOctl command \n Set Ioctls USAGE: \n"); printf("./nl80211_util vap_name set_short_gi value(0/1/2)\n"); printf("./nl80211_util vap_name set_mode $mode_name\n"); printf("./nl80211_util vap_name set_rate $rate_value (Eg: If user wants to set data rate as 6Mbps then value should be given as 12)\n"); //printf("./nl80211_util vap_name set_privacy\n"); } } else if(strncmp(argv[2], "get", 3) == 0) { if(strncmp(argv[2],"get_short_gi", strlen("get_short_gi")) == 0) { buffer[0] = IEEE80211_PARAM_SHORT_GI; ioctl_get(buffer, &argv[0]); printf(" The short_gi is %d \n", buffer[0]); return 0; } else if(strncmp(argv[2],"get_mode", strlen("get_mode")) == 0) { buffer[1] = 1; buffer[0] = IEEE80211_PARAM_MODE; ioctl_get(buffer, &argv[0]); printf(" The mode is %s \n", buffer); return 0; } else if(strncmp(argv[2],"get_name", strlen("get_name")) == 0) { buffer[1] = 1; buffer[0] = IEEE80211_PARAM_NAME; ioctl_get(buffer, &argv[0]); printf(" The name is %s \n", buffer); return 0; } else if(strncmp(argv[2],"get_rate", strlen("get_rate")) == 0) { buffer[1] = 1; buffer[0] = IEEE80211_PARAM_RATE; ioctl_get(buffer, &argv[0]); //printf("The Data rate is %d \n" , buffer[0]); printf("The Data rate is %0.1f \n", (float )buffer[0]/2); return 0; } else if(strncmp(argv[2],"get_privacy", strlen("get_privacy")) == 0) { buffer[0] = IEEE80211_PARAM_PRIVACY; ioctl_get(buffer, &argv[0]); if(buffer[0] == PRIVACY_ENABLED) { printf("The privacy is Enabled\n" ); } else if(buffer[0] == PRIVACY_DISABLED) { printf("The privacy is Disabled\n" ); } return 0; } else if(strncmp(argv[2],"get_opt_bw", strlen("get_opt_bw")) == 0) { buffer[1] = 1; buffer[0] = IEEE80211_PARAM_BW; ioctl_get(buffer, &argv[0]); if(buffer[0] == BW_40Mhz) { printf("Device is in 40Mhz Mode\n"); } else if(buffer[0] == BW_20Mhz) { printf("Device is in 20Mhz Mode\n"); } } else { printf("In valid Get IOctl command \n Get Ioctls USAGE: \n"); printf("./nl80211_util vap_name get_short_gi\n"); printf("./nl80211_util vap_name get_mode\n"); printf("./nl80211_util vap_name get_name\n"); printf("./nl80211_util vap_name get_rate\n"); printf("./nl80211_util vap_name get_privacy\n"); printf("./nl80211_util vap_name get_opt_bw\n"); } } return 0; }