aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--gtk/h323_analysis.c15
-rw-r--r--gtk/h323_analysis.h3
-rw-r--r--gtk/h323_conversations.c10
-rw-r--r--gtk/h323_conversations.h30
-rw-r--r--gtk/h323_conversations_dlg.c14
5 files changed, 63 insertions, 9 deletions
diff --git a/gtk/h323_analysis.c b/gtk/h323_analysis.c
index dacb25b31f..c3b30ebfec 100644
--- a/gtk/h323_analysis.c
+++ b/gtk/h323_analysis.c
@@ -69,6 +69,7 @@ typedef struct _user_data_t {
guint16 port_dst;
guint32 ip_src_h245;
guint16 port_src_h245;
+ guint16 transport;
GtkWidget *window;
GtkCList *clist1;
@@ -352,14 +353,18 @@ static void on_refresh_bt_clicked(GtkWidget *bt _U_, user_data_t *user_data _U_)
/* try to compile the filter for h225 */
g_snprintf(filter_text_h225,sizeof(filter_text_h225),
- "h225 && (( ip.src==%s && tcp.srcport==%u && ip.dst==%s && tcp.dstport==%u ) || ( ip.src==%s && tcp.srcport==%u && ip.dst==%s && tcp.dstport==%u ))",
+ "h225 && (( ip.src==%s && %s.srcport==%u && ip.dst==%s && %s.dstport==%u ) || ( ip.src==%s && %s.srcport==%u && ip.dst==%s && %s.dstport==%u ))",
ip_to_str((ip_addr_p)&(user_data->ip_src)),
+ transport_prot_name[user_data->transport],
user_data->port_src,
ip_to_str((ip_addr_p)&(user_data->ip_dst)),
+ transport_prot_name[user_data->transport],
user_data->port_dst,
ip_to_str((ip_addr_p)&(user_data->ip_dst)),
+ transport_prot_name[user_data->transport],
user_data->port_dst,
ip_to_str((ip_addr_p)&(user_data->ip_src)),
+ transport_prot_name[user_data->transport],
user_data->port_src
);
@@ -370,10 +375,12 @@ static void on_refresh_bt_clicked(GtkWidget *bt _U_, user_data_t *user_data _U_)
/* try to compile the filter for h245 */
g_snprintf(filter_text_h245,sizeof(filter_text_h245),
- "h245 && (( ip.src==%s && tcp.srcport==%u ) || ( ip.dst==%s && tcp.dstport==%u ))",
+ "h245 && (( ip.src==%s && %s.srcport==%u ) || ( ip.dst==%s && %s.dstport==%u ))",
ip_to_str((ip_addr_p)&(user_data->ip_src_h245)),
+ transport_prot_name[user_data->transport],
user_data->port_src_h245,
ip_to_str((ip_addr_p)&(user_data->ip_src_h245)),
+ transport_prot_name[user_data->transport],
user_data->port_src_h245
);
@@ -530,7 +537,8 @@ void h323_analysis(
guint32 ip_dst,
guint16 port_dst,
guint32 ip_src_h245,
- guint16 port_src_h245
+ guint16 port_src_h245,
+ guint16 transport
)
{
user_data_t *user_data;
@@ -544,6 +552,7 @@ void h323_analysis(
user_data->port_dst = port_dst;
user_data->ip_src_h245 = ip_src_h245;
user_data->port_src_h245 = port_src_h245;
+ user_data->transport = transport;
/* create the dialog box */
create_h225_dialog(user_data);
diff --git a/gtk/h323_analysis.h b/gtk/h323_analysis.h
index c03dca4fbb..92138ddf3b 100644
--- a/gtk/h323_analysis.h
+++ b/gtk/h323_analysis.h
@@ -41,7 +41,8 @@ void h323_analysis(
guint32 ip_dst, /* network-order IPv4 address */
guint16 port_dst,
guint32 ip_src_h245, /* network-order IPv4 address */
- guint16 port_src_h245
+ guint16 port_src_h245,
+ guint16 transport
);
#endif /* H323_ANALYSIS_H_INCLUDED*/
diff --git a/gtk/h323_conversations.c b/gtk/h323_conversations.c
index d69e1e3b5f..263bae9b1a 100644
--- a/gtk/h323_conversations.c
+++ b/gtk/h323_conversations.c
@@ -75,12 +75,14 @@ gint h323_conversations_info_cmp(gconstpointer aa, gconstpointer bb)
&& (a->src_port == b->src_port)
&& (a->dest_addr == b->dest_addr)
&& (a->dest_port == b->dest_port)
+ && (a->transport == b->transport)
)
return 0;
else if ((a->src_addr == b->dest_addr)
&& (a->src_port == b->dest_port)
&& (a->dest_addr == b->src_addr)
&& (a->dest_port == b->src_port)
+ && (a->transport == b->transport)
)
return 0;
else
@@ -146,6 +148,8 @@ int h225conversations_packet(h323conversations_tapinfo_t *tapinfo _U_, packet_in
tmp_strinfo.src_port = pinfo->srcport;
g_memmove(&(tmp_strinfo.dest_addr), pinfo->dst.data, 4);
tmp_strinfo.dest_port = pinfo->destport;
+ tmp_strinfo.transport = pinfo->ipproto;
+
/* check wether we already have a conversations with these parameters in the list */
list = g_list_first(tapinfo->strinfo_list);
@@ -311,6 +315,7 @@ int h245conversations_packet(h323conversations_tapinfo_t *tapinfo _U_, packet_in
struct _h323_conversations_info* a;
guint32 src, dst;
guint16 srcp, dstp;
+ guint16 p_transport;
/* check wether this packet is a part of any H323 conversation in the list*/
list = g_list_first(tapinfo->strinfo_list);
@@ -323,8 +328,9 @@ int h245conversations_packet(h323conversations_tapinfo_t *tapinfo _U_, packet_in
//dst = *(pinfo->dst.data);
srcp = pinfo->srcport;
dstp = pinfo->destport;
- if ( ((a->h245address == src) && (a->h245port == srcp) ) ||
- ( (a->h245address == dst) && (a->h245port == dstp)) ) {
+ p_transport = pinfo->ipproto;
+ if ( ((a->h245address == src) && (a->h245port == srcp) && (a->transport == p_transport)) ||
+ ( (a->h245address == dst) && (a->h245port == dstp) && (a->transport == p_transport)) ) {
/* in the list? increment packet number */
++(a->h245packets);
break;
diff --git a/gtk/h323_conversations.h b/gtk/h323_conversations.h
index e54f648e9a..1a02e36a61 100644
--- a/gtk/h323_conversations.h
+++ b/gtk/h323_conversations.h
@@ -55,6 +55,7 @@ typedef struct _h323_conversations_info {
guint8 pt;
guint32 npackets;
gboolean faststart;
+ guint32 transport;
/* if there are also h245 messages */
gboolean is_h245;
guint32 h245packets;
@@ -65,6 +66,35 @@ typedef struct _h323_conversations_info {
} h323_conversations_info_t;
+static char *transport_prot_name[256] ={
+ "","","","","","","tcp","","","", /* 0 to 10 */
+ "","","","","","","","udp","","", /* 10 to 20 */
+ "","","","","","","","","","", /* 20 to 30 */
+ "","","","","","","","","","", /* 30 to 40 */
+ "","","","","","","","","","", /* 40 to 50 */
+ "","","","","","","","","","", /* 50 to 60 */
+ "","","","","","","","","","", /* 60 to 70 */
+ "","","","","","","","","","", /* 70 to 80 */
+ "","","","","","","","","","", /* 80 to 90 */
+ "","","","","","","","","","", /* 90 to 100 */
+ "","","","","","","","","","", /* 100 to 110 */
+ "","","","","","","","","","", /* 110 to 120 */
+ "","","","","","","","","","", /* 120 to 130 */
+ "","","sctp","","","","","","","", /* 130 to 140 */
+ "","","","","","","","","","", /* 140 to 150 */
+ "","","","","","","","","","", /* 150 to 160 */
+ "","","","","","","","","","", /* 160 to 170 */
+ "","","","","","","","","","", /* 170 to 180 */
+ "","","","","","","","","","", /* 180 to 190 */
+ "","","","","","","","","","", /* 190 to 200 */
+ "","","","","","","","","","", /* 200 to 210 */
+ "","","","","","","","","","", /* 210 to 220 */
+ "","","","","","","","","","", /* 220 to 230 */
+ "","","","","","","","","","", /* 230 to 240 */
+ "","","","","","","","","","", /* 240 to 250 */
+ "","","","","","" /* 250 to 255 */
+ };
+
/* structure that holds the information about all detected conversationss */
/* struct holding all information of the tap */
typedef struct _h323conversations_tapinfo {
diff --git a/gtk/h323_conversations_dlg.c b/gtk/h323_conversations_dlg.c
index 5fc9259dbd..991c0921d9 100644
--- a/gtk/h323_conversations_dlg.c
+++ b/gtk/h323_conversations_dlg.c
@@ -181,21 +181,26 @@ h323conversations_on_filter (GtkButton *button _U_,
/* if also address for h245 packets is known */
else if (selected_conversations_fwd->is_h245) {
filter_string_fwd = g_strdup_printf(
- "((ip.addr==%s && tcp.port==%u && ip.addr==%s && tcp.port==%u) and h225) or ((ip.addr==%s && tcp.port==%u) and h245)",
+ "((ip.addr==%s && %s.port==%u && ip.addr==%s && %s.port==%u) and h225) or ((ip.addr==%s && %s.port==%u) and h245)",
ip_to_str((const guint8*)&(selected_conversations_fwd->src_addr)),
+ transport_prot_name[selected_conversations_fwd->transport],
selected_conversations_fwd->src_port,
ip_to_str((const guint8*)&(selected_conversations_fwd->dest_addr)),
+ transport_prot_name[selected_conversations_fwd->transport],
selected_conversations_fwd->dest_port,
ip_to_str((const guint8*)&(selected_conversations_fwd->h245address)),
+ transport_prot_name[selected_conversations_fwd->transport],
selected_conversations_fwd->h245port);
}
/* else filter only h225 packets */
else {
filter_string_fwd = g_strdup_printf(
- "(ip.addr==%s && tcp.port==%u && ip.addr==%s && tcp.port==%u) and h225",
+ "(ip.addr==%s && %s.port==%u && ip.addr==%s && %s.port==%u) and h225",
ip_to_str((const guint8*)&(selected_conversations_fwd->src_addr)),
+ transport_prot_name[selected_conversations_fwd->transport],
selected_conversations_fwd->src_port,
ip_to_str((const guint8*)&(selected_conversations_fwd->dest_addr)),
+ transport_prot_name[selected_conversations_fwd->transport],
selected_conversations_fwd->dest_port);
}
@@ -221,6 +226,7 @@ h323conversations_on_analyse (GtkButton *button _U_,
guint16 port_dst = 0;
guint32 ip_src_h245 = 0;
guint16 port_src_h245 = 0;
+ guint16 transport=0;
if (selected_conversations_fwd) {
ip_src = selected_conversations_fwd->src_addr;
@@ -229,6 +235,7 @@ h323conversations_on_analyse (GtkButton *button _U_,
port_dst = selected_conversations_fwd->dest_port;
ip_src_h245 = selected_conversations_fwd->h245address;
port_src_h245 = selected_conversations_fwd->h245port;
+ transport = selected_conversations_fwd->transport;
}
h323_analysis(
@@ -237,7 +244,8 @@ h323conversations_on_analyse (GtkButton *button _U_,
ip_dst,
port_dst,
ip_src_h245,
- port_src_h245
+ port_src_h245,
+ transport
);
}