summaryrefslogtreecommitdiff
path: root/trafgen_proto.c
diff options
context:
space:
mode:
authorVadim Kochan <vadim4j@gmail.com>2016-07-26 22:35:07 +0300
committerTobias Klauser <tklauser@distanz.ch>2016-08-02 16:11:19 +0200
commit59e69bf9106e6f085f90cb33ac7241e3ded41767 (patch)
tree95d82ae7f5205972ff8b74f7f1f4b258138d3e88 /trafgen_proto.c
parenta378db32a6e88a04d839bf2c2f27f62d81986186 (diff)
trafgen: proto: Reference to packet from struct proto_hdr
Using of current_packet() is not possible for dynamically updated fields so we need to keep the packet index in proto_hdr struct to reference the correct packet. Signed-off-by: Vadim Kochan <vadim4j@gmail.com> Signed-off-by: Tobias Klauser <tklauser@distanz.ch>
Diffstat (limited to 'trafgen_proto.c')
-rw-r--r--trafgen_proto.c13
1 files changed, 7 insertions, 6 deletions
diff --git a/trafgen_proto.c b/trafgen_proto.c
index cb0c6ae..e5b1ad3 100644
--- a/trafgen_proto.c
+++ b/trafgen_proto.c
@@ -49,7 +49,7 @@ struct proto_hdr *proto_lower_header(struct proto_hdr *hdr)
uint8_t *proto_header_ptr(struct proto_hdr *hdr)
{
- return &current_packet()->payload[hdr->pkt_offset];
+ return &packet_get(hdr->pkt_id)->payload[hdr->pkt_offset];
}
static struct proto_hdr *proto_header_by_id(enum proto_id id)
@@ -81,7 +81,7 @@ static void proto_fields_realloc(struct proto_hdr *hdr, size_t count)
void proto_header_fields_add(struct proto_hdr *hdr,
const struct proto_field *fields, size_t count)
{
- struct packet *pkt = current_packet();
+ struct packet *pkt = packet_get(hdr->pkt_id);
struct proto_field *f;
int i;
@@ -99,6 +99,7 @@ void proto_header_fields_add(struct proto_hdr *hdr,
f->shift = fields[i].shift;
f->mask = fields[i].mask;
f->pkt_offset = hdr->pkt_offset + fields[i].offset;
+ f->hdr = hdr;
if (f->pkt_offset + f->len > pkt->len) {
hdr->len += f->len;
@@ -135,6 +136,8 @@ struct proto_hdr *proto_header_init(enum proto_id pid)
new_hdr = xmalloc(sizeof(*new_hdr));
memcpy(new_hdr, hdr, sizeof(*new_hdr));
+ new_hdr->pkt_id = current_packet_id();
+
if (new_hdr->header_init)
new_hdr->header_init(new_hdr);
@@ -187,7 +190,7 @@ static void __proto_field_set_bytes(struct proto_hdr *hdr, uint32_t fid,
if (is_default && field->is_set)
return;
- payload = &current_packet()->payload[field->pkt_offset];
+ payload = &packet_get(hdr->pkt_id)->payload[field->pkt_offset];
if (field->len == 1) {
p8 = payload;
@@ -232,9 +235,7 @@ void proto_field_set_bytes(struct proto_hdr *hdr, uint32_t fid, uint8_t *bytes)
static uint8_t *__proto_field_get_bytes(struct proto_field *field)
{
- struct packet *pkt = current_packet();
-
- return &pkt->payload[field->pkt_offset];
+ return &packet_get(field->hdr->pkt_id)->payload[field->pkt_offset];
}
void proto_field_set_u8(struct proto_hdr *hdr, uint32_t fid, uint8_t val)
rivate-remove&id=b1669c9f5ac9d50651889e22e4a82f1b34af32d3'>logplain -rw-r--r--drm_crtc_helper.h3301logplain -rw-r--r--drm_debugfs_crc.h2670logplain -rw-r--r--drm_displayid.h2850logplain -rw-r--r--drm_dp_dual_mode_helper.h4532logplain -rw-r--r--drm_dp_helper.h30638logplain -rw-r--r--drm_dp_mst_helper.h16260logplain -rw-r--r--drm_drv.h14861logplain -rw-r--r--drm_edid.h14335logplain -rw-r--r--drm_encoder.h8160logplain -rw-r--r--drm_encoder_slave.h6583logplain -rw-r--r--drm_fb_cma_helper.h1929logplain -rw-r--r--drm_fb_helper.h15125logplain -rw-r--r--drm_fixed.h4825logplain -rw-r--r--drm_flip_work.h3071logplain -rw-r--r--drm_fourcc.h2748logplain -rw-r--r--drm_framebuffer.h9623logplain -rw-r--r--drm_gem.h8052logplain -rw-r--r--drm_gem_cma_helper.h2286logplain -rw-r--r--drm_global.h2011logplain -rw-r--r--drm_hashtab.h3139logplain -rw-r--r--drm_irq.h6323logplain -rw-r--r--drm_legacy.h6933logplain -rw-r--r--drm_mem_util.h2468logplain -rw-r--r--drm_mipi_dsi.h10327logplain -rw-r--r--drm_mm.h11462logplain -rw-r--r--drm_mode_config.h23728logplain -rw-r--r--drm_mode_object.h4911logplain -rw-r--r--drm_modes.h17078logplain -rw-r--r--drm_modeset_helper.h1576logplain -rw-r--r--drm_modeset_helper_vtables.h41180logplain -rw-r--r--drm_modeset_lock.h4241logplain -rw-r--r--drm_of.h2034logplain -rw-r--r--drm_os_linux.h2230logplain -rw-r--r--drm_panel.h7079logplain -rw-r--r--drm_pciids.h68035logplain -rw-r--r--drm_plane.h19435logplain -rw-r--r--drm_plane_helper.h3186logplain -rw-r--r--drm_print.h3232logplain -rw-r--r--drm_property.h11460logplain -rw-r--r--drm_rect.h5103logplain -rw-r--r--drm_simple_kms_helper.h4090logplain -rw-r--r--drm_sysfs.h300logplain -rw-r--r--drm_vma_manager.h7840logplain -rw-r--r--gma_drm.h1033logplain d---------i2c109logplain