{
char *end;
unsigned char bssid[6];
- int freq, err;
+ int freq;
if (argc < 1)
return 1;
}
}
- if (argc) {
- if (strcmp(*argv, "key") != 0 && strcmp(*argv, "keys") != 0)
- return 1;
-
- argv++;
- argc--;
+ if (!argc)
+ return 0;
- err = parse_keys(msg, argv, argc);
- if (err)
- return err;
- }
+ if (strcmp(*argv, "key") != 0 && strcmp(*argv, "keys") != 0)
+ return 1;
- return set_interface_up(state->ifname);
+ argv++;
+ argc--;
+ return parse_keys(msg, argv, argc);
nla_put_failure:
return -ENOSPC;
}
{
char *end;
unsigned char abssid[6];
- int err;
if (argc < 2)
return 1;
}
}
- if (argc) {
- if (strcmp(*argv, "key") != 0 && strcmp(*argv, "keys") != 0)
- return 1;
-
- argv++;
- argc--;
+ if (!argc)
+ return 0;
- err = parse_keys(msg, argv, argc);
- if (err)
- return err;
- }
+ if (strcmp(*argv, "key") != 0 && strcmp(*argv, "keys") != 0)
+ return 1;
- return set_interface_up(state->ifname);
+ argv++;
+ argc--;
+ return parse_keys(msg, argv, argc);
nla_put_failure:
return -ENOSPC;
}
o_argc = argc;
o_argv = argv;
- state->ifname = NULL;
-
switch (idby) {
case II_PHY_IDX:
command_idby = CIB_PHY;
break;
case II_NETDEV:
command_idby = CIB_NETDEV;
- state->ifname = *argv;
devidx = if_nametoindex(*argv);
if (devidx == 0)
devidx = -1;
struct nl_sock *nl_sock;
struct nl_cache *nl_cache;
struct genl_family *nl80211;
-
- const char *ifname;
};
enum command_identify_by {
const char *get_reason_str(uint16_t reason);
const char *get_status_str(uint16_t status);
-int set_interface_up(const char *ifname);
-
enum print_ie_type {
PRINT_SCAN,
PRINT_LINK,
#include <netlink/attr.h>
#include <errno.h>
#include <stdbool.h>
-#include <net/if.h>
-#include <string.h>
-#include <sys/ioctl.h>
-#include <unistd.h>
#include "iw.h"
#include "nl80211.h"
"for example: d:2:6162636465 is the same as d:2:abcde\n");
return 2;
}
-
-int set_interface_up(const char *ifname)
-{
- struct ifreq ifr;
- int fd = socket(PF_INET, SOCK_DGRAM, 0);
- int err = 0;
-
- if (fd < 0)
- return -errno;
-
- memset(&ifr, 0, sizeof(ifr));
- strncpy(ifr.ifr_name, ifname, IFNAMSIZ);
- if (ioctl(fd, SIOCGIFFLAGS, &ifr)) {
- err = -errno;
- goto out;
- }
-
- if (ifr.ifr_flags & IFF_UP)
- goto out;
-
- ifr.ifr_flags |= IFF_UP;
- if (ioctl(fd, SIOCSIFFLAGS, &ifr))
- err = -errno;
-
- out:
- close(fd);
- return err;
-}