本文整理汇总了C++中byteorder_htons函数的典型用法代码示例。如果您正苦于以下问题:C++ byteorder_htons函数的具体用法?C++ byteorder_htons怎么用?C++ byteorder_htons使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了byteorder_htons函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。
示例1: DEBUG
gnrc_pktsnip_t *_dio_dodag_conf_build(gnrc_pktsnip_t *pkt, gnrc_rpl_dodag_t *dodag)
{
gnrc_rpl_opt_dodag_conf_t *dodag_conf;
gnrc_pktsnip_t *opt_snip;
if ((opt_snip = gnrc_pktbuf_add(pkt, NULL, sizeof(gnrc_rpl_opt_dodag_conf_t),
GNRC_NETTYPE_UNDEF)) == NULL) {
DEBUG("RPL: BUILD DODAG CONF - no space left in packet buffer\n");
gnrc_pktbuf_release(pkt);
return NULL;
}
dodag_conf = opt_snip->data;
dodag_conf->type = GNRC_RPL_OPT_DODAG_CONF;
dodag_conf->length = GNRC_RPL_OPT_DODAG_CONF_LEN;
dodag_conf->flags_a_pcs = 0;
dodag_conf->dio_int_doubl = dodag->dio_interval_doubl;
dodag_conf->dio_int_min = dodag->dio_min;
dodag_conf->dio_redun = dodag->dio_redun;
dodag_conf->max_rank_inc = byteorder_htons(dodag->instance->max_rank_inc);
dodag_conf->min_hop_rank_inc = byteorder_htons(dodag->instance->min_hop_rank_inc);
dodag_conf->ocp = byteorder_htons(dodag->instance->of->ocp);
dodag_conf->reserved = 0;
dodag_conf->default_lifetime = dodag->default_lifetime;
dodag_conf->lifetime_unit = byteorder_htons(dodag->lifetime_unit);
return opt_snip;
}
开发者ID:MatKub,项目名称:RIOT,代码行数:25,代码来源:gnrc_rpl_control_messages.c
示例2: ping_send
static int ping_send(const uip_ipaddr_t *dst, int payload_len)
{
int len = payload_len;
icmpv6_echo_t *ping = uip_icmp_buf();
ping->id = byteorder_htons(ECHO_ID);
if (payload_len > max_len()) {
puts("Payload too long for buffer.");
return -1;
}
for (network_uint16_t *payload = (network_uint16_t *)(ping + 1);
len >= 0;
payload++, len -= 2) {
*payload = byteorder_htons(seq);
}
ping->seq = byteorder_htons(seq++);
uip_icmp6_send((const uip_ipaddr_t *)dst, ICMPV6_ECHO_REQ, 0,
payload_len + (sizeof(icmpv6_echo_t) - sizeof(icmpv6_hdr_t)));
return 0;
}
开发者ID:deepfryed,项目名称:RIOT,代码行数:25,代码来源:ping.c
示例3: DEBUG
ng_pktsnip_t *ng_icmpv6_echo_build(uint8_t type, uint16_t id, uint16_t seq,
uint8_t *data, size_t data_len)
{
ng_pktsnip_t *pkt;
ng_icmpv6_echo_t *echo;
if ((pkt = ng_icmpv6_build(NULL, type, 0, data_len + sizeof(ng_icmpv6_echo_t))) == NULL) {
return NULL;
}
DEBUG("icmpv6_echo: Building echo message with type=%" PRIu8 "id=%" PRIu16
", seq=%" PRIu16, type, id, seq);
echo = (ng_icmpv6_echo_t *)pkt->data;
echo->id = byteorder_htons(id);
echo->seq = byteorder_htons(seq);
if (data != NULL) {
memcpy(echo + 1, data, data_len);
#if defined(MODULE_OD) && ENABLE_DEBUG
DEBUG(", payload:\n");
od_hex_dump(data, data_len, OD_WIDTH_DEFAULT);
#endif
DEBUG("\n");
}
#if ENABLE_DEBUG
else {
DEBUG("\n");
}
#endif
return pkt;
}
开发者ID:jdhuanghub,项目名称:RIOT,代码行数:32,代码来源:ng_icmpv6_echo.c
示例4: _send_1st_fragment
static uint16_t _send_1st_fragment(gnrc_netif_t *iface, gnrc_pktsnip_t *pkt,
size_t payload_len, size_t datagram_size)
{
gnrc_pktsnip_t *frag;
uint16_t local_offset = 0;
/* payload_len: actual size of the packet vs
* datagram_size: size of the uncompressed IPv6 packet */
int payload_diff = (datagram_size - payload_len);
/* virtually add payload_diff to flooring to account for offset (must be divisable by 8)
* in uncompressed datagram */
uint16_t max_frag_size = _floor8(iface->sixlo.max_frag_size + payload_diff -
sizeof(sixlowpan_frag_t)) - payload_diff;
sixlowpan_frag_t *hdr;
uint8_t *data;
DEBUG("6lo frag: determined max_frag_size = %" PRIu16 "\n", max_frag_size);
frag = _build_frag_pkt(pkt, payload_len,
max_frag_size + sizeof(sixlowpan_frag_t));
if (frag == NULL) {
return 0;
}
hdr = frag->next->data;
data = (uint8_t *)(hdr + 1);
hdr->disp_size = byteorder_htons((uint16_t)datagram_size);
hdr->disp_size.u8[0] |= SIXLOWPAN_FRAG_1_DISP;
hdr->tag = byteorder_htons(_tag);
/* Tell the link layer that we will send more fragments */
gnrc_netif_hdr_t *netif_hdr = frag->data;
netif_hdr->flags |= GNRC_NETIF_HDR_FLAGS_MORE_DATA;
pkt = pkt->next; /* don't copy netif header */
while (pkt != NULL) {
size_t clen = _min(max_frag_size - local_offset, pkt->size);
memcpy(data + local_offset, pkt->data, clen);
local_offset += clen;
if (local_offset >= max_frag_size) {
break;
}
pkt = pkt->next;
}
DEBUG("6lo frag: send first fragment (datagram size: %u, "
"datagram tag: %" PRIu16 ", fragment size: %" PRIu16 ")\n",
(unsigned int)datagram_size, _tag, local_offset);
gnrc_sixlowpan_dispatch_send(frag, NULL, 0);
return local_offset;
}
开发者ID:kbumsik,项目名称:RIOT,代码行数:56,代码来源:gnrc_sixlowpan_frag.c
示例5: gnrc_rpl_send_DIO
void gnrc_rpl_send_DIO(gnrc_rpl_instance_t *inst, ipv6_addr_t *destination)
{
if (inst == NULL) {
DEBUG("RPL: Error - trying to send DIO without being part of a dodag.\n");
return;
}
gnrc_rpl_dodag_t *dodag = &inst->dodag;
gnrc_pktsnip_t *pkt = NULL, *tmp = NULL;
gnrc_rpl_dio_t *dio;
#ifndef GNRC_RPL_WITHOUT_PIO
if (dodag->req_opts & GNRC_RPL_REQ_OPT_PREFIX_INFO) {
if ((pkt = _dio_prefix_info_build(pkt, dodag)) == NULL) {
return;
}
}
#endif
if (dodag->req_opts & GNRC_RPL_REQ_OPT_DODAG_CONF) {
if ((pkt = _dio_dodag_conf_build(pkt, dodag)) == NULL) {
return;
}
dodag->req_opts &= ~GNRC_RPL_REQ_OPT_DODAG_CONF;
}
if ((tmp = gnrc_pktbuf_add(pkt, NULL, sizeof(gnrc_rpl_dio_t), GNRC_NETTYPE_UNDEF)) == NULL) {
DEBUG("RPL: Send DIO - no space left in packet buffer\n");
gnrc_pktbuf_release(pkt);
return;
}
pkt = tmp;
dio = pkt->data;
dio->instance_id = inst->id;
dio->version_number = dodag->version;
/* a leaf node announces an INFINITE_RANK */
dio->rank = ((dodag->node_status == GNRC_RPL_LEAF_NODE) ?
byteorder_htons(GNRC_RPL_INFINITE_RANK) : byteorder_htons(dodag->my_rank));
dio->g_mop_prf = (dodag->grounded << GNRC_RPL_GROUNDED_SHIFT) |
(inst->mop << GNRC_RPL_MOP_SHIFT) | dodag->prf;
dio->dtsn = dodag->dtsn;
dio->flags = 0;
dio->reserved = 0;
dio->dodag_id = dodag->dodag_id;
if ((tmp = gnrc_icmpv6_build(pkt, ICMPV6_RPL_CTRL, GNRC_RPL_ICMPV6_CODE_DIO,
sizeof(icmpv6_hdr_t))) == NULL) {
DEBUG("RPL: Send DIO - no space left in packet buffer\n");
gnrc_pktbuf_release(pkt);
return;
}
pkt = tmp;
gnrc_rpl_send(pkt, NULL, destination, &dodag->dodag_id);
}
开发者ID:JMR-b,项目名称:RIOT,代码行数:55,代码来源:gnrc_rpl_control_messages.c
示例6: _send_1st_fragment
static uint16_t _send_1st_fragment(ng_sixlowpan_netif_t *iface, ng_pktsnip_t *pkt,
size_t payload_len, size_t datagram_size)
{
ng_pktsnip_t *frag;
uint16_t max_frag_size = _floor8(iface->max_frag_size -
(payload_len - datagram_size) -
sizeof(ng_sixlowpan_frag_t));
uint16_t local_offset = 0;
ng_sixlowpan_frag_t *hdr;
uint8_t *data;
DEBUG("6lo frag: determined max_frag_size = %" PRIu16 "\n", max_frag_size);
/* 6LoWPAN dispatches don't count into that */
max_frag_size += (payload_len - datagram_size);
frag = _build_frag_pkt(pkt, payload_len,
max_frag_size + sizeof(ng_sixlowpan_frag_t));
if (frag == NULL) {
return 0;
}
hdr = frag->next->data;
data = (uint8_t *)(hdr + 1);
hdr->disp_size = byteorder_htons((uint16_t)datagram_size);
hdr->disp_size.u8[0] |= NG_SIXLOWPAN_FRAG_1_DISP;
hdr->tag = byteorder_htons(_tag);
pkt = pkt->next; /* don't copy netif header */
while (pkt != NULL) {
size_t clen = _min(max_frag_size - local_offset, pkt->size);
memcpy(data + local_offset, pkt->data, clen);
local_offset += clen;
if (local_offset >= max_frag_size) {
break;
}
pkt = pkt->next;
}
DEBUG("6lo frag: send first fragment (datagram size: %u, "
"datagram tag: %" PRIu16 ", fragment size: %" PRIu16 ")\n",
(unsigned int)datagram_size, _tag, local_offset);
ng_netapi_send(iface->pid, frag);
return local_offset;
}
开发者ID:PSHIVANI,项目名称:Riot-Code,代码行数:52,代码来源:ng_sixlowpan_frag.c
示例7: gnrc_ndp_opt_build
gnrc_pktsnip_t *gnrc_sixlowpan_nd_opt_abr_build(uint32_t version, uint16_t ltime,
ipv6_addr_t *braddr, gnrc_pktsnip_t *next)
{
gnrc_pktsnip_t *pkt = gnrc_ndp_opt_build(NDP_OPT_ABR, sizeof(sixlowpan_nd_opt_abr_t), next);
if (pkt != NULL) {
sixlowpan_nd_opt_abr_t *abr_opt = pkt->data;
abr_opt->vlow = byteorder_htons(version & 0xffff);
abr_opt->vhigh = byteorder_htons(version >> 16);
abr_opt->ltime = byteorder_htons(ltime);
abr_opt->braddr.u64[0] = braddr->u64[0];
abr_opt->braddr.u64[1] = braddr->u64[1];
}
开发者ID:daniel-k,项目名称:RIOT,代码行数:13,代码来源:gnrc_sixlowpan_nd_router.c
示例8: _send
static void _send(ng_pktsnip_t *pkt)
{
ng_udp_hdr_t *hdr;
ng_pktsnip_t *udp_snip;
ng_netreg_entry_t *sendto;
/* get udp snip and hdr */
LL_SEARCH_SCALAR(pkt, udp_snip, type, NG_NETTYPE_UDP);
udp_snip = ng_pktbuf_start_write(udp_snip);
if (udp_snip == NULL) {
DEBUG("udp: cannot send packet: unable to allocate packet\n");
ng_pktbuf_release(pkt);
return;
}
hdr = (ng_udp_hdr_t *)udp_snip->data;
/* fill in size field */
hdr->length = byteorder_htons(ng_pkt_len(udp_snip));
/* and forward packet to the network layer */
sendto = ng_netreg_lookup(pkt->type, NG_NETREG_DEMUX_CTX_ALL);
/* throw away packet if no one is interested */
if (sendto == NULL) {
DEBUG("udp: cannot send packet: network layer not found\n");
ng_pktbuf_release(pkt);
return;
}
/* send packet to network layer */
ng_pktbuf_hold(pkt, ng_netreg_num(pkt->type, NG_NETREG_DEMUX_CTX_ALL) - 1);
while (sendto != NULL) {
ng_netapi_send(sendto->pid, pkt);
sendto = ng_netreg_getnext(sendto);
}
}
开发者ID:anishkt,项目名称:RIOT,代码行数:33,代码来源:ng_udp.c
示例9: gnrc_pktbuf_add
static gnrc_pktsnip_t *_build_ipv6_packet(const ipv6_addr_t *src,
const ipv6_addr_t *dst, uint8_t nh,
void *data, size_t data_len,
uint16_t netif)
{
gnrc_pktsnip_t *netif_hdr, *ipv6, *payload;
ipv6_hdr_t *ipv6_hdr;
if ((netif > INT16_MAX) || (data_len > UINT16_MAX)) {
return NULL;
}
payload = gnrc_pktbuf_add(NULL, data, data_len, GNRC_NETTYPE_UNDEF);
if (payload == NULL) {
return NULL;
}
ipv6 = gnrc_ipv6_hdr_build(NULL, src, dst);
if (ipv6 == NULL) {
return NULL;
}
ipv6_hdr = ipv6->data;
ipv6_hdr->len = byteorder_htons((uint16_t)payload->size);
ipv6_hdr->nh = nh;
ipv6_hdr->hl = 64;
LL_APPEND(payload, ipv6);
netif_hdr = gnrc_netif_hdr_build(NULL, 0, NULL, 0);
if (netif_hdr == NULL) {
return NULL;
}
((gnrc_netif_hdr_t *)netif_hdr->data)->if_pid = (kernel_pid_t)netif;
LL_APPEND(payload, netif_hdr);
return payload;
}
开发者ID:LucaZulberti,项目名称:RIOT,代码行数:33,代码来源:stack.c
示例10: send
static int send(int iface, le_uint16_t dst_pan, uint8_t *dst, size_t dst_len,
char *data)
{
int res;
netdev2_ieee802154_t *dev;
const size_t count = 2; /* mhr + payload */
struct iovec vector[count];
uint8_t *src;
size_t src_len;
uint8_t mhr[IEEE802154_MAX_HDR_LEN];
uint8_t flags;
le_uint16_t src_pan;
if (((unsigned)iface) > (ATA8510_NUM - 1)) {
printf("txtsnd: %d is not an interface\n", iface);
return 1;
}
dev = (netdev2_ieee802154_t *)&devs[iface];
flags = (uint8_t)(dev->flags & NETDEV2_IEEE802154_SEND_MASK);
flags |= IEEE802154_FCF_TYPE_DATA;
vector[1].iov_base = data;
vector[1].iov_len = strlen(data);
src_pan = byteorder_btols(byteorder_htons(dev->pan));
if (dst_pan.u16 == 0) {
dst_pan = src_pan;
}
if (dev->flags & NETDEV2_IEEE802154_SRC_MODE_LONG) {
src_len = 8;
src = dev->long_addr;
}
else {
src_len = 2;
src = dev->short_addr;
}
/* fill MAC header, seq should be set by device */
if ((res = ieee802154_set_frame_hdr(mhr, src, src_len,
dst, dst_len,
src_pan, dst_pan,
flags, dev->seq++)) < 0) {
puts("txtsnd: Error preperaring frame");
return 1;
}
vector[0].iov_base = mhr;
vector[0].iov_len = (size_t)res;
res = dev->netdev.driver->send((netdev2_t *)dev, vector, count);
if (res < 0) {
puts("txtsnd: Error on sending");
return 1;
}
else {
printf("txtsnd: send %u bytes to ", (unsigned)vector[1].iov_len);
print_addr(dst, dst_len);
printf(" (PAN: ");
print_addr((uint8_t *)&dst_pan, sizeof(dst_pan));
puts(")");
}
return 0;
}
开发者ID:ant9000,项目名称:RIOT,代码行数:59,代码来源:cmd.c
示例11: at86rf2xx_set_pan
void at86rf2xx_set_pan(at86rf2xx_t *dev, uint16_t pan)
{
le_uint16_t le_pan = byteorder_btols(byteorder_htons(pan));
dev->netdev.pan = pan;
DEBUG("pan0: %u, pan1: %u\n", le_pan.u8[0], le_pan.u8[1]);
at86rf2xx_reg_write(dev, AT86RF2XX_REG__PAN_ID_0, le_pan.u8[0]);
at86rf2xx_reg_write(dev, AT86RF2XX_REG__PAN_ID_1, le_pan.u8[1]);
}
开发者ID:LucaZulberti,项目名称:RIOT,代码行数:8,代码来源:at86rf2xx_getset.c
示例12: _fill_ipv6_hdr
static int _fill_ipv6_hdr(kernel_pid_t iface, gnrc_pktsnip_t *ipv6,
gnrc_pktsnip_t *payload)
{
int res;
ipv6_hdr_t *hdr = ipv6->data;
hdr->len = byteorder_htons(gnrc_pkt_len(payload));
DEBUG("ipv6: set payload length to %u (network byteorder %04" PRIx16 ")\n",
(unsigned) gnrc_pkt_len(payload), hdr->len.u16);
/* check if e.g. extension header was not already marked */
if (hdr->nh == PROTNUM_RESERVED) {
hdr->nh = gnrc_nettype_to_protnum(payload->type);
/* if still reserved: mark no next header */
if (hdr->nh == PROTNUM_RESERVED) {
hdr->nh = PROTNUM_IPV6_NONXT;
}
}
DEBUG("ipv6: set next header to %u\n", hdr->nh);
if (hdr->hl == 0) {
if (iface == KERNEL_PID_UNDEF) {
hdr->hl = GNRC_IPV6_NETIF_DEFAULT_HL;
}
else {
hdr->hl = gnrc_ipv6_netif_get(iface)->cur_hl;
}
}
if (ipv6_addr_is_unspecified(&hdr->src)) {
if (ipv6_addr_is_loopback(&hdr->dst)) {
ipv6_addr_set_loopback(&hdr->src);
}
else {
ipv6_addr_t *src = gnrc_ipv6_netif_find_best_src_addr(iface, &hdr->dst, false);
if (src != NULL) {
DEBUG("ipv6: set packet source to %s\n",
ipv6_addr_to_str(addr_str, src, sizeof(addr_str)));
memcpy(&hdr->src, src, sizeof(ipv6_addr_t));
}
/* Otherwise leave unspecified */
}
}
DEBUG("ipv6: calculate checksum for upper header.\n");
if ((res = gnrc_netreg_calc_csum(payload, ipv6)) < 0) {
if (res != -ENOENT) { /* if there is no checksum we are okay */
DEBUG("ipv6: checksum calculation failed.\n");
return res;
}
}
return 0;
}
开发者ID:AdamRLukaitis,项目名称:RIOT,代码行数:58,代码来源:gnrc_ipv6.c
示例13: cc2420_reg_write
void cc2420_reg_write(const cc2420_t *dev,
const uint8_t addr,
const uint16_t value)
{
uint16_t tmp = byteorder_htons(value).u16;
spi_acquire(SPI_BUS, SPI_CS, SPI_MODE, SPI_CLK);
spi_transfer_regs(SPI_BUS, SPI_CS, (CC2420_REG_WRITE | addr), &tmp, NULL, 2);
spi_release(SPI_BUS);
}
开发者ID:A-Paul,项目名称:RIOT,代码行数:10,代码来源:cc2420_internal.c
示例14: send
static void send(int argc, char **argv) {
if (argc < 2) {
puts("Send n bytes to fe80::1\n");
puts("Usage: send <n>");
return;
}
ipv6_hdr_t ipv6_hdr;
netdev_hlist_t ulh = { NULL, NULL, &ipv6_hdr, sizeof(ipv6_hdr_t) };
long long n = atoll(argv[1]);
uint8_t bytes[n];
uint16_t dest = 1;
if (n < 0 || n >= (1 << 16)) {
puts("n must be a 16-bit unsigned integer");
return;
}
for (int i = 0; i < n; i++) {
bytes[i] = data_value;
}
data_value++;
ulh.next = &ulh;
ulh.prev = &ulh;
ipv6_hdr_set_version(&ipv6_hdr);
ipv6_hdr_set_trafficclass(&ipv6_hdr, 0);
ipv6_hdr_set_flowlabel(&ipv6_hdr, 0);
ipv6_hdr.length = byteorder_htons((uint16_t)n);
ipv6_hdr.nextheader = IPV6_PROTO_NUM_NONE;
ipv6_hdr.hoplimit = 64;
ipv6_hdr.srcaddr.u64[0] = byteorder_htonll(0xfe80000000000000);
ipv6_hdr.srcaddr.u32[2] = byteorder_htonl(0x000000ff);
ipv6_hdr.srcaddr.u16[6] = byteorder_htons(0xfe00);
ipv6_hdr.srcaddr.u16[7] = byteorder_htons(src);
ipv6_hdr.destaddr.u64[0] = byteorder_htonll(0xfe80000000000000);
ipv6_hdr.destaddr.u32[2] = byteorder_htonl(0x000000ff);
ipv6_hdr.destaddr.u16[6] = byteorder_htons(0xfe00);
ipv6_hdr.destaddr.u16[7] = byteorder_htons(dest);
netapi_send_data2(sixlowpan, &ulh, &dest, sizeof(uint16_t), bytes, n);
}
开发者ID:miri64,项目名称:RIOT_playground,代码行数:43,代码来源:main.c
示例15: sizeof
ng_pktsnip_t *ng_udp_hdr_build(ng_pktsnip_t *payload,
uint8_t *src, size_t src_len,
uint8_t *dst, size_t dst_len) {
ng_pktsnip_t *res;
ng_udp_hdr_t *hdr;
/* check parameters */
if (src == NULL || dst == NULL ||
src_len != sizeof(uint16_t) || dst_len != sizeof(uint16_t)) {
return NULL;
}
/* allocate header */
res = ng_pktbuf_add(payload, NULL, sizeof(ng_udp_hdr_t), NG_NETTYPE_UDP);
if (res == NULL) {
return NULL;
}
/* initialize header */
hdr = (ng_udp_hdr_t *)res->data;
hdr->src_port = byteorder_htons(*((uint16_t *)src));
hdr->dst_port = byteorder_htons(*((uint16_t *)dst));
hdr->checksum = byteorder_htons(0);
return res;
}
开发者ID:anishkt,项目名称:RIOT,代码行数:23,代码来源:ng_udp.c
示例16: gnrc_ndp_opt_build
gnrc_pktsnip_t *gnrc_sixlowpan_nd_opt_ar_build(uint8_t status, uint16_t ltime, eui64_t *eui64,
gnrc_pktsnip_t *next)
{
gnrc_pktsnip_t *pkt = gnrc_ndp_opt_build(NDP_OPT_AR, sizeof(sixlowpan_nd_opt_ar_t), next);
if (pkt != NULL) {
sixlowpan_nd_opt_ar_t *ar_opt = pkt->data;
ar_opt->status = status;
ar_opt->resv[0] = ar_opt->resv[1] = ar_opt->resv[2] = 0;
ar_opt->ltime = byteorder_htons(ltime);
memcpy(&ar_opt->eui64, eui64, sizeof(eui64_t));
}
return pkt;
}
开发者ID:arvindpdmn,项目名称:RIOT,代码行数:15,代码来源:gnrc_sixlowpan_nd.c
示例17: ng_udp_calc_csum
int ng_udp_calc_csum(ng_pktsnip_t *hdr, ng_pktsnip_t *pseudo_hdr)
{
uint16_t csum;
if (hdr == NULL || hdr->next == NULL) {
return -EFAULT;
}
if (hdr->type != NG_NETTYPE_UDP) {
return -EBADMSG;
}
csum = _calc_csum(hdr, pseudo_hdr, hdr->next);
if (csum == 0) {
return -ENOENT;
}
((ng_udp_hdr_t *)hdr->data)->checksum = byteorder_htons(csum);
return 0;
}
开发者ID:anishkt,项目名称:RIOT,代码行数:18,代码来源:ng_udp.c
示例18: test_send
/* tests sending */
static int test_send(void)
{
ethernet_hdr_t *exp_mac = (ethernet_hdr_t *)_tmp;
uint8_t *exp_payload = _tmp + sizeof(ethernet_hdr_t);
gnrc_pktsnip_t *pkt, *hdr;
msg_t msg;
/* prepare packet for sending */
pkt = gnrc_pktbuf_add(NULL, _TEST_PAYLOAD1, sizeof(_TEST_PAYLOAD1) - 1,
GNRC_NETTYPE_UNDEF);
if (pkt == NULL) {
puts("Could not allocate send payload");
return 0;
}
hdr = gnrc_netif_hdr_build(NULL, 0, (uint8_t *)_test_dst, sizeof(_test_dst));
if (hdr == NULL) {
gnrc_pktbuf_release(pkt);
puts("Could not allocate send header");
return 0;
}
LL_PREPEND(pkt, hdr);
/* prepare expected data */
memcpy(exp_mac->dst, _test_dst, sizeof(_test_dst));
memcpy(exp_mac->src, _dev_addr, sizeof(_dev_addr));
exp_mac->type = byteorder_htons(ETHERTYPE_UNKNOWN);
memcpy(exp_payload, _TEST_PAYLOAD1, sizeof(_TEST_PAYLOAD1) - 1);
_tmp_len = sizeof(_TEST_PAYLOAD1) + sizeof(ethernet_hdr_t) - 1;
/* register for returned packet status */
if (gnrc_neterr_reg(pkt) != 0) {
puts("Can not register for error reporting");
return 0;
}
/* send packet to MAC layer */
gnrc_netapi_send(_mac_pid, pkt);
/* wait for packet status and check */
msg_receive(&msg);
if ((msg.type != GNRC_NETERR_MSG_TYPE) ||
(msg.content.value != GNRC_NETERR_SUCCESS)) {
puts("Error sending packet");
return 0;
}
return 1;
}
开发者ID:AdamRLukaitis,项目名称:RIOT,代码行数:44,代码来源:main.c
示例19: gnrc_icmpv6_calc_csum
int gnrc_icmpv6_calc_csum(gnrc_pktsnip_t *hdr, gnrc_pktsnip_t *pseudo_hdr)
{
uint32_t csum = 0;
if (hdr == NULL) {
return -EFAULT;
}
if (hdr->type != GNRC_NETTYPE_ICMPV6) {
return -EBADMSG;
}
csum = _calc_csum(hdr, pseudo_hdr, hdr->next);
if (csum == 0) {
return -ENOENT;
}
((icmpv6_hdr_t *)hdr->data)->csum = byteorder_htons(csum);
return 0;
}
开发者ID:LudwigKnuepfer,项目名称:RIOT,代码行数:21,代码来源:gnrc_icmpv6.c
示例20: _tftp_send_dack
tftp_state _tftp_send_dack(tftp_context_t *ctxt, gnrc_pktsnip_t *buf, tftp_opcodes_t op)
{
size_t len = 0;
assert(op == TO_DATA || op == TO_ACK || op == TO_OACK);
/* fill the packet */
tftp_packet_data_t *pkt = (tftp_packet_data_t *)(buf->data);
pkt->block_nr = byteorder_htons(ctxt->block_nr);
pkt->opc = op;
if (op == TO_DATA) {
DEBUG("tftp: getting data from callback\n");
/* get the required data from the user */
len = ctxt->data_cb(ctxt->block_size * (ctxt->block_nr - 1), pkt->data, ctxt->block_size);
/* check if we are finished on ACK receive */
ctxt->write_finished = (len < ctxt->block_size);
/* enable timeout */
ctxt->block_timeout = ctxt->timeout;
}
else if (op == TO_OACK) {
/* append the options */
len = _tftp_append_options(ctxt, (tftp_header_t *)pkt, 0);
/* disable timeout*/
ctxt->block_timeout = 0;
}
else if (op == TO_ACK) {
/* disable timeout*/
ctxt->block_timeout = 0;
}
/* send the data */
return _tftp_send(buf, ctxt, sizeof(tftp_packet_data_t) + len);
}
开发者ID:LucaZulberti,项目名称:RIOT,代码行数:37,代码来源:gnrc_tftp.c
注:本文中的byteorder_htons函数示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论