Exemplo n.º 1
0
static int _netif_flag(char *cmd, kernel_pid_t dev, char *flag)
{
    ng_netconf_enable_t set = NETCONF_ENABLE;

    if (flag[0] == '-') {
        set = NETCONF_DISABLE;
        flag++;
    }

    if (strcmp(flag, "promisc") == 0) {
        return _netif_set_flag(dev, NETCONF_OPT_PROMISCUOUSMODE, set);
    }
    else if (strcmp(flag, "preload") == 0) {
        return _netif_set_flag(dev, NETCONF_OPT_PRELOADING, set);
    }
    else if (strcmp(flag, "autoack") == 0) {
        return _netif_set_flag(dev, NETCONF_OPT_AUTOACK, set);
    }
    else if (strcmp(flag, "raw") == 0) {
        return _netif_set_flag(dev, NETCONF_OPT_RAWMODE, set);
    }
    else if (strcmp(flag, "6lo") == 0) {
#ifdef MODULE_NG_IPV6_NETIF
        ng_ipv6_netif_t *entry = ng_ipv6_netif_get(dev);

        if (entry == NULL) {
            puts("error: unable to (un)set 6LoWPAN support");
            return 1;
        }

        mutex_lock(&entry->mutex);

        if (set) {
            entry->flags |= NG_IPV6_NETIF_FLAGS_SIXLOWPAN;
            printf("success: set 6LoWPAN support on interface %" PRIkernel_pid
                   "\n", dev);
        }
        else {
            entry->flags &= ~NG_IPV6_NETIF_FLAGS_SIXLOWPAN;
            printf("success: unset 6LoWPAN support on interface %" PRIkernel_pid
                   "\n", dev);
        }

        mutex_unlock(&entry->mutex);

        return 0;
#else
        puts("error: unable to (un)set 6LoWPAN support");

        return 1;
#endif
    }

    _flag_usage(cmd);
    return 1;
}
Exemplo n.º 2
0
static int _netif_flag(char *cmd, kernel_pid_t iface, char *flag)
{
    netopt_enable_t set = NETOPT_ENABLE;

    if (flag[0] == '-') {
        set = NETOPT_DISABLE;
        flag++;
    }
    for (unsigned i = 0; i < _ARRAY_LEN(flag_cmds); i++) {
        if (strcmp(flag_cmds[i].name, flag) == 0) {
            return _netif_set_flag(iface, flag_cmds[i].opt, set);
        }
    }
    _flag_usage(cmd);
    return 1;
}
Exemplo n.º 3
0
static int _netif_flag(char *cmd, kernel_pid_t dev, char *flag)
{
    netopt_enable_t set = NETOPT_ENABLE;

    if (flag[0] == '-') {
        set = NETOPT_DISABLE;
        flag++;
    }

    if (strcmp(flag, "promisc") == 0) {
        return _netif_set_flag(dev, NETOPT_PROMISCUOUSMODE, set);
    }
    else if (strcmp(flag, "preload") == 0) {
        return _netif_set_flag(dev, NETOPT_PRELOADING, set);
    }
    else if (strcmp(flag, "autoack") == 0) {
        return _netif_set_flag(dev, NETOPT_AUTOACK, set);
    }
    else if (strcmp(flag, "raw") == 0) {
        return _netif_set_flag(dev, NETOPT_RAWMODE, set);
    }
    else if (strcmp(flag, "6lo") == 0) {
#ifdef MODULE_GNRC_IPV6_NETIF
        gnrc_ipv6_netif_t *entry = gnrc_ipv6_netif_get(dev);

        if (entry == NULL) {
            puts("error: unable to (un)set 6LoWPAN support");
            return 1;
        }

        mutex_lock(&entry->mutex);

        if (set) {
            entry->flags |= GNRC_IPV6_NETIF_FLAGS_SIXLOWPAN;
            printf("success: set 6LoWPAN support on interface %" PRIkernel_pid
                   "\n", dev);
        }
        else {
            entry->flags &= ~GNRC_IPV6_NETIF_FLAGS_SIXLOWPAN;
            printf("success: unset 6LoWPAN support on interface %" PRIkernel_pid
                   "\n", dev);
        }

        mutex_unlock(&entry->mutex);

        return 0;
#else
        puts("error: unable to (un)set 6LoWPAN support");

        return 1;
#endif
    }
    else if (strcmp(flag, "iphc") == 0) {
#if defined(MODULE_GNRC_SIXLOWPAN_NETIF) && defined(MODULE_GNRC_SIXLOWPAN_IPHC)
        gnrc_sixlowpan_netif_t *entry = gnrc_sixlowpan_netif_get(dev);

        if (entry == NULL) {
            puts("error: unable to (un)set IPHC");
            return 1;
        }

        if (set) {
            entry->iphc_enabled = true;
            printf("success: enable IPHC on interface %" PRIkernel_pid "\n", dev);
        }
        else {
            entry->iphc_enabled = false;
            printf("success: disable IPHC on interface %" PRIkernel_pid "\n", dev);
        }
        return 0;
#else
        puts("error: unable to (un)set IPHC.");
        return 1;
#endif
    }

    _flag_usage(cmd);
    return 1;
}
Exemplo n.º 4
0
static int _netif_flag(char *cmd, kernel_pid_t dev, char *flag)
{
    netopt_enable_t set = NETOPT_ENABLE;

    if (flag[0] == '-') {
        set = NETOPT_DISABLE;
        flag++;
    }

    if (strcmp(flag, "promisc") == 0) {
        return _netif_set_flag(dev, NETOPT_PROMISCUOUSMODE, set);
    }
    else if (strcmp(flag, "preload") == 0) {
        return _netif_set_flag(dev, NETOPT_PRELOADING, set);
    }
    else if (strcmp(flag, "autoack") == 0) {
        return _netif_set_flag(dev, NETOPT_AUTOACK, set);
    }
    else if (strcmp(flag, "raw") == 0) {
        return _netif_set_flag(dev, NETOPT_RAWMODE, set);
    }
    else if (strcmp(flag, "csma") == 0) {
        return _netif_set_flag(dev, NETOPT_CSMA, set);
    }
    else if (strcmp(flag, "autocca") == 0) {
        return _netif_set_flag(dev, NETOPT_AUTOCCA, set);
    }
    else if (strcmp(flag, "iphc") == 0) {
#if defined(MODULE_GNRC_SIXLOWPAN_NETIF) && defined(MODULE_GNRC_SIXLOWPAN_IPHC)
        gnrc_sixlowpan_netif_t *entry = gnrc_sixlowpan_netif_get(dev);

        if (entry == NULL) {
            puts("error: unable to (un)set IPHC");
            return 1;
        }

        if (set) {
            entry->iphc_enabled = true;
            printf("success: enable IPHC on interface %" PRIkernel_pid "\n", dev);
        }
        else {
            entry->iphc_enabled = false;
            printf("success: disable IPHC on interface %" PRIkernel_pid "\n", dev);
        }
        return 0;
#else
        puts("error: unable to (un)set IPHC.");
        return 1;
#endif
    }
    else if (strcmp(flag, "rtr_adv") == 0) {
#if defined(MODULE_GNRC_NDP_ROUTER) || defined(MODULE_GNRC_SIXLOWPAN_ND_ROUTER)
        gnrc_ipv6_netif_t *entry = gnrc_ipv6_netif_get(dev);

        if (entry == NULL) {
            puts("error: unable to (un)set router advertisement flag.");
            return 1;
        }

        if (set) {
            gnrc_ipv6_netif_set_rtr_adv(entry, true);
            printf("success: enable router advertisements on interface %" PRIkernel_pid "\n", dev);
        }
        else {
            gnrc_ipv6_netif_set_rtr_adv(entry, false);
            printf("success: disable router advertisements on interface %" PRIkernel_pid "\n",
                   dev);
        }
        return 0;
#else
        puts("error: unable to (un)set router advertisement flag.");
        return 1;
#endif
    }

    _flag_usage(cmd);
    return 1;
}