aboutsummaryrefslogtreecommitdiffstats
path: root/asn1/h225
diff options
context:
space:
mode:
authorMichal Pazdera <michal.pazdera@gmail.com>2015-10-05 12:25:05 +0200
committerAnders Broman <a.broman58@gmail.com>2015-10-05 15:02:55 +0000
commit0eeeab7c5ed269be238d9faebfba85c0c84b1f4b (patch)
treee20318c6efe9b187e21bec6269a8715d085b400d /asn1/h225
parentc00420efa258af2599d8ddf773257b0326a1682f (diff)
H225, H245 over IPv6
This commit extends h225 and h245 dissectors to support dissection of ipv6 packets. Change-Id: Id8c045344711a96f15d619ddd72065aa3712c429 Reviewed-on: https://code.wireshark.org/review/10799 Reviewed-by: Tomáš Kukosa <tomas.kukosa@unify.com> Petri-Dish: Anders Broman <a.broman58@gmail.com> Tested-by: Petri Dish Buildbot <buildbot-no-reply@wireshark.org> Reviewed-by: Anders Broman <a.broman58@gmail.com>
Diffstat (limited to 'asn1/h225')
-rw-r--r--asn1/h225/h225.cnf33
-rw-r--r--asn1/h225/packet-h225-template.c8
2 files changed, 29 insertions, 12 deletions
diff --git a/asn1/h225/h225.cnf b/asn1/h225/h225.cnf
index b34e55a3e6..9315e047a2 100644
--- a/asn1/h225/h225.cnf
+++ b/asn1/h225/h225.cnf
@@ -327,7 +327,18 @@ IsupNumber/nationalStandardPartyNumber isupNationalStandardPartyNumber
ipv4_address = tvb_get_ipv4(value_tvb, 0);
#.END
#----------------------------------------------------------------------------------------
-#.FN_PARS H245TransportAddress/ipAddress/port VAL_PTR = &ipv4_port
+#.FN_BODY H245TransportAddress/ip6Address/ip VAL_PTR = &value_tvb
+ tvbuff_t *value_tvb;
+
+ ipv6_address = ipv6_address_zeros;
+%(DEFAULT_BODY)s
+ if (value_tvb)
+ tvb_get_ipv6(value_tvb, 0, &ipv6_address);
+#.END
+#----------------------------------------------------------------------------------------
+#.FN_PARS H245TransportAddress/ipAddress/port VAL_PTR = &ip_port
+#----------------------------------------------------------------------------------------
+#.FN_PARS H245TransportAddress/ip6Address/port VAL_PTR = &ip_port
#----------------------------------------------------------------------------------------
#.FN_BODY ParallelH245Control/_item VAL_PTR = &h245_tvb
tvbuff_t *h245_tvb = NULL;
@@ -430,7 +441,8 @@ IsupNumber/nationalStandardPartyNumber isupNationalStandardPartyNumber
#----------------------------------------------------------------------------------------
#.FN_HDR H245TransportAddress
ipv4_address=0;
- ipv4_port=0;
+ ipv6_address = ipv6_address_zeros;
+ ip_port=0;
#.END
#----------------------------------------------------------------------------------------
@@ -438,21 +450,26 @@ IsupNumber/nationalStandardPartyNumber isupNationalStandardPartyNumber
/* we need this info for TAPing */
h225_pi->is_h245 = TRUE;
h225_pi->h245_address = ipv4_address;
- h225_pi->h245_port = ipv4_port;
+ h225_pi->h245_port = ip_port;
- if((!actx->pinfo->fd->flags.visited) && ipv4_address!=0 && ipv4_port!=0 && h245_handle){
+ if ( !actx->pinfo->fd->flags.visited && h245_handle && ip_port!=0 ) {
address src_addr;
conversation_t *conv=NULL;
- SET_ADDRESS(&src_addr, AT_IPv4, 4, &ipv4_address);
+ if (ipv4_address!=0) {
+ SET_ADDRESS(&src_addr, AT_IPv4, 4, &ipv4_address);
+ } else if (memcmp(ipv6_address.bytes, ipv6_address_zeros.bytes, sizeof(ipv6_address.bytes))!=0) {
+ SET_ADDRESS(&src_addr, AT_IPv6, 16, ipv6_address.bytes);
+ } else {
+ return offset;
+ }
- conv=find_conversation(actx->pinfo->fd->num, &src_addr, &src_addr, PT_TCP, ipv4_port, ipv4_port, NO_ADDR_B|NO_PORT_B);
+ conv=find_conversation(actx->pinfo->fd->num, &src_addr, &src_addr, PT_TCP, ip_port, ip_port, NO_ADDR_B|NO_PORT_B);
if(!conv){
- conv=conversation_new(actx->pinfo->fd->num, &src_addr, &src_addr, PT_TCP, ipv4_port, ipv4_port, NO_ADDR2|NO_PORT2);
+ conv=conversation_new(actx->pinfo->fd->num, &src_addr, &src_addr, PT_TCP, ip_port, ip_port, NO_ADDR2|NO_PORT2);
conversation_set_dissector(conv, h245_handle);
}
}
-
#.END
#----------------------------------------------------------------------------------------
#.FN_BODY FacilityReason VAL_PTR = &value
diff --git a/asn1/h225/packet-h225-template.c b/asn1/h225/packet-h225-template.c
index cf6cfc31fb..9e78f785ee 100644
--- a/asn1/h225/packet-h225-template.c
+++ b/asn1/h225/packet-h225-template.c
@@ -52,7 +52,6 @@
#include "packet-q931.h"
#include "packet-ssl.h"
-
#define PNAME "H323-MESSAGES"
#define PSNAME "H.225.0"
#define PFNAME "h225"
@@ -141,8 +140,10 @@ static gboolean h225_h245_in_tree = TRUE;
static gboolean h225_tp_in_tree = TRUE;
/* Global variables */
-static guint32 ipv4_address;
-static guint32 ipv4_port;
+static guint32 ipv4_address;
+static struct e_in6_addr ipv6_address;
+static struct e_in6_addr ipv6_address_zeros = {{0}};
+static guint32 ip_port;
static gboolean contains_faststart = FALSE;
static e_guid_t *call_id_guid;
@@ -248,7 +249,6 @@ h225rassrt_packet(void *phs, packet_info *pinfo _U_, epan_dissect_t *edt _U_, co
#include "packet-h225-fn.c"
-
/* Forward declaration we need below */
void proto_reg_handoff_h225(void);