diff options
author | ruengeler <ruengeler@wireshark.org> | 2016-10-19 17:10:53 +0200 |
---|---|---|
committer | Alexis La Goutte <alexis.lagoutte@gmail.com> | 2016-10-25 16:24:51 +0000 |
commit | c63f89515985a8db0aa8a500b1832474619090aa (patch) | |
tree | 7072673a37c2c5f5a44ac88138ff3ffd84fbe1d7 /ui/tap-sctp-analysis.c | |
parent | ae88dbcc2a990218549e06e143908eed1223ad8a (diff) |
SCTP: find right assoc id
Change-Id: I107b7f4c585ef5e080d6473a37b3db9a97f12365
Reviewed-on: https://code.wireshark.org/review/18325
Reviewed-by: Jaap Keuter <jaap.keuter@xs4all.nl>
Petri-Dish: Jaap Keuter <jaap.keuter@xs4all.nl>
Tested-by: Petri Dish Buildbot <buildbot-no-reply@wireshark.org>
Reviewed-by: Alexis La Goutte <alexis.lagoutte@gmail.com>
Diffstat (limited to 'ui/tap-sctp-analysis.c')
-rw-r--r-- | ui/tap-sctp-analysis.c | 13 |
1 files changed, 8 insertions, 5 deletions
diff --git a/ui/tap-sctp-analysis.c b/ui/tap-sctp-analysis.c index d5e6faf179..d58b03e985 100644 --- a/ui/tap-sctp-analysis.c +++ b/ui/tap-sctp-analysis.c @@ -442,7 +442,7 @@ packet(void *tapdata _U_, packet_info *pinfo, epan_dissect_t *edt _U_, const voi info->init = FALSE; info->initack = FALSE; info->check_address = FALSE; - info->direction = 0; + info->direction = sctp_info->direction; info = calc_checksum(sctp_info, info); info->n_packets = 1; info->error_info_list = NULL; @@ -554,13 +554,13 @@ packet(void *tapdata _U_, packet_info *pinfo, epan_dissect_t *edt _U_, const voi { store = (address *)g_malloc(sizeof (address)); alloc_address_tvb(NULL, store, AT_IPv4, 4, sctp_info->tvb[chunk_number], IPV4_ADDRESS_OFFSET); - info = add_address(store, info, 1); + info = add_address(store, info, info->direction); } else if (type == IPV6ADDRESS_PARAMETER_ID) { store = (address *)g_malloc(sizeof (address)); alloc_address_tvb(NULL, store, AT_IPv6, 16, sctp_info->tvb[chunk_number], IPV6_ADDRESS_OFFSET); - info = add_address(store, info, 1); + info = add_address(store, info, info->direction); } } @@ -743,14 +743,17 @@ packet(void *tapdata _U_, packet_info *pinfo, epan_dissect_t *edt _U_, const voi addr = (guint8 *)g_malloc(tmp_info.src.len); memcpy(addr,(tmp_info.src.data),tmp_info.src.len); store->data = addr; - info = add_address(store, info, 1); + info = add_address(store, info, info->direction); store = (address *)g_malloc(sizeof (address)); store->type = tmp_info.dst.type; store->len = tmp_info.dst.len; addr = (guint8 *)g_malloc(tmp_info.dst.len); memcpy(addr,(tmp_info.dst.data),tmp_info.dst.len); store->data = addr; - info = add_address(store, info, 2); + if (info->direction == 1) + info = add_address(store, info, 2); + else + info = add_address(store, info, 1); number = (guint32 *)g_malloc(sizeof(guint32)); *number = pinfo->num; info->frame_numbers=g_list_prepend(info->frame_numbers,number); |