コード例 #1
0
ファイル: tests-netif.c プロジェクト: 4dahalibut/RIOT
static void test_ng_netif_addr_from_str__out_too_short(void)
{
    static const char str[] = "05:cd";
    uint8_t out[1];

    TEST_ASSERT_EQUAL_INT(0, ng_netif_addr_from_str(out, sizeof(out), str));
}
コード例 #2
0
ファイル: tests-netif.c プロジェクト: 4dahalibut/RIOT
static void test_ng_netif_addr_from_str__ill_extra_delimitter(void)
{
    static const char str[] = "05::cd";
    uint8_t out[sizeof(str)];

    TEST_ASSERT_EQUAL_INT(0, ng_netif_addr_from_str(out, sizeof(out), str));
}
コード例 #3
0
ファイル: tests-netif.c プロジェクト: 4dahalibut/RIOT
static void test_ng_netif_addr_from_str__ill_formated2(void)
{
    static const char str[] = TEST_STRING8;
    uint8_t out[sizeof(str)];

    TEST_ASSERT_EQUAL_INT(0, ng_netif_addr_from_str(out, sizeof(out), str));
}
コード例 #4
0
ファイル: sc_netif.c プロジェクト: 4dahalibut/RIOT
static int _netif_set_addr(kernel_pid_t dev, ng_netconf_opt_t opt,
                           char *addr_str)
{
    uint8_t addr[MAX_ADDR_LEN];
    size_t addr_len = ng_netif_addr_from_str(addr, sizeof(addr), addr_str);

    if (addr_len == 0) {
        puts("error: unable to parse address.\n"
             "Must be of format [0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*\n"
             "(hex pairs delimited by colons)");
        return 1;
    }

    if (ng_netapi_set(dev, opt, 0, addr, addr_len) < 0) {
        printf("error: unable to set ");
        _print_netconf(opt);
        puts("");
        return 1;
    }

    printf("success: set ");
    _print_netconf(opt);
    printf(" on interface %" PRIkernel_pid " to %s\n", dev, addr_str);

    return 0;
}
コード例 #5
0
ファイル: sc_ipv6_nc.c プロジェクト: robby14/RIOT
static int _ipv6_nc_add(kernel_pid_t iface, char *ipv6_addr_str,
                        char *l2_addr_str)
{
    ipv6_addr_t ipv6_addr;
    uint8_t l2_addr[MAX_L2_ADDR_LEN];
    size_t l2_addr_len;

    if (ipv6_addr_from_str(&ipv6_addr, ipv6_addr_str) == NULL) {
        puts("error: unable to parse IPv6 address.");
        return 1;
    }

    if ((l2_addr_len = ng_netif_addr_from_str(l2_addr, sizeof(l2_addr),
                       l2_addr_str)) == 0) {
        puts("error: unable to parse link-layer address.");
        return 1;
    }

    if (ng_ipv6_nc_add(iface, &ipv6_addr, l2_addr, l2_addr_len, 0) == NULL) {
        puts("error: unable to add address to neighbor cache.");
        return 1;
    }

    printf("success: added IPv6 address %s to neighbor cache\n", ipv6_addr_str);
    return 0;
}
コード例 #6
0
ファイル: tests-netif.c プロジェクト: Alex-Gramm/RIOT
static void test_ng_netif_addr_from_str__ill_formated3(void)
{
    char str[] = "05-cd";
    uint8_t out[sizeof(str)];

    TEST_ASSERT_EQUAL_INT(0, ng_netif_addr_from_str(out, sizeof(out), str));
}
コード例 #7
0
ファイル: tests-netif.c プロジェクト: 4dahalibut/RIOT
static void test_ng_netif_addr_from_str__success(void)
{
    static const char str[] = "05:cd";
    uint8_t out[2];

    TEST_ASSERT_EQUAL_INT(2, ng_netif_addr_from_str(out, sizeof(out), str));
    TEST_ASSERT_EQUAL_INT(0x05, out[0]);
    TEST_ASSERT_EQUAL_INT(0xcd, out[1]);
}
コード例 #8
0
ファイル: tests-netif.c プロジェクト: 4dahalibut/RIOT
static void test_ng_netif_addr_from_str__zero_omitted_back(void)
{
    static const char str[] = "05:c";
    uint8_t out[2];

    TEST_ASSERT_EQUAL_INT(2, ng_netif_addr_from_str(out, sizeof(out), str));
    TEST_ASSERT_EQUAL_INT(0x05, out[0]);
    TEST_ASSERT_EQUAL_INT(0x0c, out[1]);
}
コード例 #9
0
ファイル: tests-netif.c プロジェクト: 4dahalibut/RIOT
static void test_ng_netif_addr_from_str__omitted_delimitter(void)
{
    static const char str[] = "4567:cd";
    uint8_t out[3];

    TEST_ASSERT_EQUAL_INT(3, ng_netif_addr_from_str(out, sizeof(out), str));
    TEST_ASSERT_EQUAL_INT(0x45, out[0]);
    TEST_ASSERT_EQUAL_INT(0x67, out[1]);
    TEST_ASSERT_EQUAL_INT(0xcd, out[2]);
}
コード例 #10
0
ファイル: sc_netif.c プロジェクト: 4dahalibut/RIOT
/* shell commands */
int _netif_send(int argc, char **argv)
{
    kernel_pid_t dev;
    uint8_t addr[MAX_ADDR_LEN];
    size_t addr_len;
    ng_pktsnip_t *pkt;
    ng_netif_hdr_t *nethdr;
    uint8_t flags = 0x00;

    if (argc < 4) {
        printf("usage: %s <if> [<addr>|bcast] <data>\n", argv[0]);
        return 1;
    }

    /* parse interface */
    dev = (kernel_pid_t)atoi(argv[1]);

    if (!_is_iface(dev)) {
        puts("error: invalid interface given");
        return 1;
    }

    /* parse address */
    addr_len = ng_netif_addr_from_str(addr, sizeof(addr), argv[2]);

    if (addr_len == 0) {
        if (strcmp(argv[2], "bcast") == 0) {
            flags |= NG_NETIF_HDR_FLAGS_BROADCAST;
        }
        else {
            puts("error: invalid address given");
            return 1;
        }
    }

    /* put packet together */
    pkt = ng_pktbuf_add(NULL, argv[3], strlen(argv[3]), NG_NETTYPE_UNDEF);
    pkt = ng_pktbuf_add(pkt, NULL, sizeof(ng_netif_hdr_t) + addr_len,
                        NG_NETTYPE_NETIF);
    nethdr = (ng_netif_hdr_t *)pkt->data;
    ng_netif_hdr_init(nethdr, 0, addr_len);
    ng_netif_hdr_set_dst_addr(nethdr, addr, addr_len);
    nethdr->flags = flags;
    /* and send it */
    ng_netapi_send(dev, pkt);

    return 0;
}