/** * ib_ud_header_pack - Pack UD header struct into wire format * @header:UD header struct * @buf:Buffer to pack into * * ib_ud_header_pack() packs the UD header structure @header into wire * format in the buffer @buf. */ int ib_ud_header_pack(struct ib_ud_header *header, void *buf) { int len = 0; ib_pack(lrh_table, ARRAY_SIZE(lrh_table), &header->lrh, buf); len += IB_LRH_BYTES; if (header->grh_present) { ib_pack(grh_table, ARRAY_SIZE(grh_table), &header->grh, buf + len); len += IB_GRH_BYTES; } ib_pack(bth_table, ARRAY_SIZE(bth_table), &header->bth, buf + len); len += IB_BTH_BYTES; ib_pack(deth_table, ARRAY_SIZE(deth_table), &header->deth, buf + len); len += IB_DETH_BYTES; if (header->immediate_present) { memcpy(buf + len, &header->immediate_data, sizeof header->immediate_data); len += sizeof header->immediate_data; } return len; }
/** * ib_ud_header_pack - Pack UD header struct into wire format * @header:UD header struct * @buf:Buffer to pack into * * ib_ud_header_pack() packs the UD header structure @header into wire * format in the buffer @buf. */ int ib_ud_header_pack(struct ib_ud_header *header, void *buf) { int len = 0; if (header->lrh_present) { ib_pack(lrh_table, ARRAY_SIZE(lrh_table), &header->lrh, buf + len); len += IB_LRH_BYTES; } if (header->eth_present) { ib_pack(eth_table, ARRAY_SIZE(eth_table), &header->eth, buf + len); len += IB_ETH_BYTES; } if (header->vlan_present) { ib_pack(vlan_table, ARRAY_SIZE(vlan_table), &header->vlan, buf + len); len += IB_VLAN_BYTES; } if (header->grh_present) { ib_pack(grh_table, ARRAY_SIZE(grh_table), &header->grh, buf + len); len += IB_GRH_BYTES; } if (header->ipv4_present) { ib_pack(ip4_table, ARRAY_SIZE(ip4_table), &header->ip4, buf + len); len += IB_IP4_BYTES; } if (header->udp_present) { ib_pack(udp_table, ARRAY_SIZE(udp_table), &header->udp, buf + len); len += IB_UDP_BYTES; } ib_pack(bth_table, ARRAY_SIZE(bth_table), &header->bth, buf + len); len += IB_BTH_BYTES; ib_pack(deth_table, ARRAY_SIZE(deth_table), &header->deth, buf + len); len += IB_DETH_BYTES; if (header->immediate_present) { memcpy(buf + len, &header->immediate_data, sizeof header->immediate_data); len += sizeof header->immediate_data; } return len; }
/** * ib_lrh_header_pack - Pack LRH header struct into wire format * @lrh:unpacked LRH header struct * @buf:Buffer to pack into * * ib_lrh_header_pack() packs the LRH header structure @lrh into * wire format in the buffer @buf. */ int ib_lrh_header_pack(struct ib_unpacked_lrh *lrh, void *buf) { ib_pack(lrh_table, ARRAY_SIZE(lrh_table), lrh, buf); return 0; }