size_t ofl_structs_packet_queue_pack(struct ofl_packet_queue *src, struct ofp_packet_queue *dst, uint32_t port) { size_t total_len, len; uint8_t *data; size_t i; total_len = sizeof(struct ofp_packet_queue) + ofl_structs_queue_prop_ofp_total_len(src->properties, src->properties_num); dst->len = htons(total_len); memset(dst->pad, 0x00, sizeof(dst->pad)); dst->port = htonl(port); dst->queue_id = htonl(src->queue_id); data = (uint8_t *)dst + sizeof(struct ofp_packet_queue); for (i=0; i<src->properties_num; i++) { len = ofl_structs_queue_prop_pack(src->properties[i], (struct ofp_queue_prop_header *)data); data += len; } return total_len; }
size_t ofl_structs_packet_queue_ofp_len(struct ofl_packet_queue *queue) { return sizeof(struct ofp_packet_queue) + ofl_structs_queue_prop_ofp_total_len(queue->properties, queue->properties_num); }