show_src_identity(packet_info *pinfo, const gint16 id) { if (0 < id) col_add_fstr(pinfo->cinfo, COL_DEF_SRC, "%03d (%s)", id, ep_address_to_str(&pinfo->dl_src)); else if (0 == id) col_add_fstr(pinfo->cinfo, COL_DEF_SRC, "Ini (%s)", ep_address_to_str(&pinfo->dl_src)); else col_add_fstr(pinfo->cinfo, COL_DEF_SRC, "... (%s)", ep_address_to_str(&pinfo->dl_src)); }
QString TCPStreamDialog::streamDescription() { return QString(tr(" for %1:%2 %3 %4:%5")) .arg(ep_address_to_str(&graph_.src_address)) .arg(graph_.src_port) .arg(UTF8_RIGHTWARDS_ARROW) .arg(ep_address_to_str(&graph_.dst_address)) .arg(graph_.dst_port); }
show_dst_identity(packet_info *pinfo, const gint16 id) { if (0 < id) col_add_fstr(pinfo->cinfo, COL_DEF_DST, "%03d (%s)", id, ep_address_to_str(&pinfo->dl_dst)); else if (0 == id) col_add_fstr(pinfo->cinfo, COL_DEF_DST, "Ini (%s)", ep_address_to_str(&pinfo->dl_dst)); else if (-1 == id) col_add_fstr(pinfo->cinfo, COL_DEF_DST, "All (%s)", ep_address_to_str(&pinfo->dl_dst)); else col_add_fstr(pinfo->cinfo, COL_DEF_DST, "... (%s)", ep_address_to_str(&pinfo->dl_dst)); }
static void tacplus_print_key_entry( gpointer data, gpointer user_data ) { tacplus_key_entry *tacplus_data=(tacplus_key_entry *)data; if( user_data ) { printf("%s:%s=%s\n", ep_address_to_str( tacplus_data->s ), ep_address_to_str( tacplus_data->c ), tacplus_data->k ); } else { printf("%s:%s\n", ep_address_to_str( tacplus_data->s ), ep_address_to_str( tacplus_data->c ) ); } }
void iousers_process_address_packet(io_users_t *iu, const address *src, const address *dst, guint64 pkt_len, nstime_t *ts) { const address *addr1, *addr2; io_users_item_t *iui; if(CMP_ADDRESS(src, dst)>0){ addr1=src; addr2=dst; } else { addr2=src; addr1=dst; } for(iui=iu->items;iui;iui=iui->next){ if((!CMP_ADDRESS(&iui->addr1, addr1)) &&(!CMP_ADDRESS(&iui->addr2, addr2)) ){ break; } } if(!iui){ iui=g_malloc(sizeof(io_users_item_t)); iui->next=iu->items; iu->items=iui; COPY_ADDRESS(&iui->addr1, addr1); iui->name1=g_strdup(ep_address_to_str(addr1)); COPY_ADDRESS(&iui->addr2, addr2); iui->name2=g_strdup(ep_address_to_str(addr2)); iui->frames1=0; iui->frames2=0; iui->bytes1=0; iui->bytes2=0; memcpy(&iui->start_rel_time, ts, sizeof(iui->start_rel_time)); memcpy(&iui->stop_rel_time, ts, sizeof(iui->stop_rel_time)); } else { if (nstime_cmp(ts, &iui->stop_rel_time) > 0) { memcpy(&iui->stop_rel_time, ts, sizeof(iui->stop_rel_time)); } else if (nstime_cmp(ts, &iui->start_rel_time) < 0) { memcpy(&iui->start_rel_time, ts, sizeof(iui->start_rel_time)); } } if(!CMP_ADDRESS(dst, &iui->addr1)){ iui->frames1++; iui->bytes1+=pkt_len; } else { iui->frames2++; iui->bytes2+=pkt_len; } }
LBMSubstreamEntry::LBMSubstreamEntry(guint64 channel, guint32 substream_id, const address * source_address, guint16 source_port, const address * destination_address, guint16 destination_port) : m_channel(channel), m_substream_id(substream_id), m_first_frame((guint32)(~0)), m_flast_frame(0), m_messages(0), m_bytes(0), m_item(NULL) { m_endpoint_a = QString("%1:%2") .arg(ep_address_to_str(source_address)) .arg(source_port); m_endpoint_b = QString("%1:%2") .arg(ep_address_to_str(destination_address)) .arg(destination_port); }
const char *get_conversation_address(address *addr, gboolean resolve_names) { if (resolve_names) { return ep_address_to_display(addr); } else { return ep_address_to_str(addr); } }
/* dissect a bt dht values list from tvb, start at offset. it's like "l6:....6:....e" */ static int dissect_bt_dht_values(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint offset, char **result, char *label ) { proto_item *ti; proto_tree *sub_tree; proto_item *value_ti; proto_tree *value_tree; address addr; guint peer_index; guint string_len_start; guint string_len; guint16 port; ti = proto_tree_add_item( tree, hf_bt_dht_peers, tvb, offset, 0, ENC_NA ); sub_tree = proto_item_add_subtree( ti, ett_bt_dht_peers); peer_index = 0; /* we has confirmed that the first byte is 'l' */ offset += 1; /* dissect bt-dht values */ while( tvb_get_guint8(tvb,offset)!='e' ) { string_len_start = offset; while( tvb_get_guint8(tvb,offset) != ':' ) offset += 1; string_len = atoi( tvb_get_ephemeral_string(tvb,string_len_start,offset-string_len_start) ); /* skip the ':' */ offset += 1; /* 4 bytes ip, 2 bytes port */ for( ; string_len>=6; string_len-=6, offset+=6 ) { peer_index += 1; SET_ADDRESS( &addr, AT_IPv4, 4, tvb_get_ptr( tvb, offset, 4) ); port = tvb_get_letohl( tvb, offset+4 ); value_ti = proto_tree_add_none_format( sub_tree, hf_bt_dht_peer, tvb, offset, 6, "%d\t%s:%u", peer_index, ep_address_to_str( &addr ), port ); value_tree = proto_item_add_subtree( value_ti, ett_bt_dht_peers); proto_tree_add_item( value_tree, hf_ip, tvb, offset, 4, ENC_BIG_ENDIAN); proto_tree_add_item( value_tree, hf_port, tvb, offset+4, 2, ENC_BIG_ENDIAN); } /* truncated data */ if( string_len>0 ) { proto_tree_add_item( tree, hf_truncated_data, tvb, offset, string_len, ENC_NA ); offset += string_len; } } proto_item_set_text( ti, "%s: %d peers", label, peer_index ); col_append_fstr( pinfo->cinfo, COL_INFO, "reply=%d peers ", peer_index ); *result = ep_strdup_printf("%d peers", peer_index); return offset; }
static int dissect_bt_dht_nodes(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint offset, char **result, char *label ) { proto_item *ti; proto_tree *sub_tree; proto_item *node_ti; proto_tree *node_tree; guint node_index; guint string_len_start; guint string_len; address addr; guint16 port; guint8 *id; ti = proto_tree_add_item( tree, hf_bt_dht_nodes, tvb, offset, 0, ENC_NA ); sub_tree = proto_item_add_subtree( ti, ett_bt_dht_nodes); node_index = 0; string_len_start = offset; while( tvb_get_guint8(tvb,offset) != ':' ) offset += 1; string_len = atoi( tvb_get_ephemeral_string(tvb,string_len_start,offset-string_len_start) ); /* skip the ':' */ offset += 1; /* 20 bytes id, 4 bytes ip, 2 bytes port */ for( ; string_len>=26; string_len-=26, offset+=26 ) { node_index += 1; id = tvb_bytes_to_str(tvb, offset, 20 ); SET_ADDRESS( &addr, AT_IPv4, 4, tvb_get_ptr( tvb, offset, 4) ); port = tvb_get_letohl( tvb, offset+24 ); node_ti = proto_tree_add_none_format( sub_tree, hf_bt_dht_node, tvb, offset, 26, "%d\t%s %s:%u", node_index, id, ep_address_to_str( &addr ), port ); node_tree = proto_item_add_subtree( node_ti, ett_bt_dht_peers); proto_tree_add_item( node_tree, hf_bt_dht_id, tvb, offset, 20, ENC_NA); proto_tree_add_item( node_tree, hf_ip, tvb, offset+20, 4, ENC_BIG_ENDIAN); proto_tree_add_item( node_tree, hf_port, tvb, offset+24, 2, ENC_BIG_ENDIAN); } if( string_len>0 ) { proto_tree_add_item( tree, hf_truncated_data, tvb, offset, string_len, ENC_NA ); offset += string_len; } proto_item_set_text( ti, "%s: %d nodes", label, node_index ); col_append_fstr( pinfo->cinfo, COL_INFO, "reply=%d nodes ", node_index ); *result = ep_strdup_printf("%d", node_index); return offset; }
QString LBMStreamEntry::formatEndpoint(const lbm_uim_stream_endpoint_t * endpoint) { if (endpoint->type == lbm_uim_instance_stream) { return QString(bytes_to_ep_str(endpoint->stream_info.ctxinst.ctxinst, sizeof(endpoint->stream_info.ctxinst.ctxinst))); } else { return QString("%1:%2:%3") .arg(endpoint->stream_info.dest.domain) .arg(ep_address_to_str(&(endpoint->stream_info.dest.addr))) .arg(endpoint->stream_info.dest.port); } }
static void dissect_hpteam(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) { col_set_str(pinfo->cinfo, COL_PROTOCOL, "HP NIC Team"); col_add_fstr(pinfo->cinfo, COL_INFO, "HP NIC Teaming Heartbeat; Port MAC = %s", ep_address_to_str(&pinfo->dl_src)); if (tree) { /* we are being asked for details */ proto_item *hpteam_item; proto_tree *hpteam_tree; hpteam_item = proto_tree_add_item(tree, proto_hpteam, tvb, 0, -1, ENC_NA); hpteam_tree = proto_item_add_subtree(hpteam_item, ett_hpteam); proto_tree_add_item(hpteam_tree, hf_hpteam, tvb, 0, -1, ENC_NA); } }
const char *get_hostlist_filter(hostlist_talker_t *host) { char *sport; const char *str; sport=ct_port_to_str(host->ptype, host->port); str = g_strdup_printf("%s==%s%s%s%s%s", hostlist_get_filter_name(host, CONV_FT_ANY_ADDRESS), ep_address_to_str(&host->myaddress), sport?" && ":"", sport?hostlist_get_filter_name(host, CONV_FT_ANY_PORT):"", sport?"==":"", sport?sport:""); return str; }
gcp_msg_t* gcp_msg(packet_info* pinfo, int o, gboolean keep_persistent_data) { gcp_msg_t* m; guint32 framenum = (guint32)pinfo->fd->num; guint32 offset = (guint32)o; address* src = &(pinfo->src); address* dst = &(pinfo->dst); address* lo_addr; address* hi_addr; if (keep_persistent_data) { emem_tree_key_t key[] = { {1,&(framenum)}, {1,&offset}, {0,NULL} }; if (( m = se_tree_lookup32_array(msgs,key) )) { m->commited = TRUE; return m; } else { m = se_alloc(sizeof(gcp_msg_t)); m->framenum = framenum; m->time = pinfo->fd->abs_ts; m->trxs = NULL; m->commited = FALSE; se_tree_insert32_array(msgs,key,m); } } else { m = ep_new0(gcp_msg_t); m->framenum = framenum; m->trxs = NULL; m->commited = FALSE; } if (CMP_ADDRESS(src, dst) < 0) { lo_addr = src; hi_addr = dst; } else { lo_addr = dst; hi_addr = src; } switch(lo_addr->type) { case AT_NONE: m->lo_addr = 0; m->hi_addr = 0; break; case AT_IPv4: memcpy((guint8*)&(m->hi_addr),hi_addr->data,4); memcpy((guint8*)&(m->lo_addr),lo_addr->data,4); break; case AT_SS7PC: m->hi_addr = mtp3_pc_hash((const mtp3_addr_pc_t *)hi_addr->data); m->lo_addr = mtp3_pc_hash((const mtp3_addr_pc_t *)lo_addr->data); break; default: /* XXX: heuristic and error prone */ m->hi_addr = g_str_hash(ep_address_to_str(hi_addr)); m->lo_addr = g_str_hash(ep_address_to_str(lo_addr)); break; } return m; }
static void dissect_ipx(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) { tvbuff_t *next_tvb; proto_tree *ipx_tree = NULL; proto_item *ti = NULL, *hidden_item; const guint8 *src_net_node, *dst_net_node; guint8 ipx_hops; char *str; guint16 first_socket, second_socket; guint32 ipx_snet, ipx_dnet; static ipxhdr_t ipxh_arr[4]; static int ipx_current=0; ipxhdr_t *ipxh; ipx_current++; if(ipx_current==4){ ipx_current=0; } ipxh=&ipxh_arr[ipx_current]; col_set_str(pinfo->cinfo, COL_PROTOCOL, "IPX"); col_clear(pinfo->cinfo, COL_INFO); /* Calculate here for use in pinfo and in tree */ ipxh->ipx_dsocket = tvb_get_ntohs(tvb, 16); ipxh->ipx_ssocket = tvb_get_ntohs(tvb, 28); ipxh->ipx_type = tvb_get_guint8(tvb, 5); ipxh->ipx_length = tvb_get_ntohs(tvb, 2); pinfo->ptype = PT_IPX; pinfo->srcport = ipxh->ipx_ssocket; pinfo->destport = ipxh->ipx_dsocket; /* Adjust the tvbuff length to include only the IPX datagram. */ set_actual_length(tvb, ipxh->ipx_length); src_net_node = tvb_get_ptr(tvb, 18, 10); dst_net_node = tvb_get_ptr(tvb, 6, 10); SET_ADDRESS(&pinfo->net_src, AT_IPX, 10, src_net_node); SET_ADDRESS(&pinfo->src, AT_IPX, 10, src_net_node); SET_ADDRESS(&ipxh->ipx_src, AT_IPX, 10, src_net_node); SET_ADDRESS(&pinfo->net_dst, AT_IPX, 10, dst_net_node); SET_ADDRESS(&pinfo->dst, AT_IPX, 10, dst_net_node); SET_ADDRESS(&ipxh->ipx_dst, AT_IPX, 10, dst_net_node); if (check_col(pinfo->cinfo, COL_INFO)) col_add_fstr(pinfo->cinfo, COL_INFO, "%s (0x%04x)", socket_text(ipxh->ipx_dsocket), ipxh->ipx_dsocket); if (tree) { ti = proto_tree_add_item(tree, proto_ipx, tvb, 0, IPX_HEADER_LEN, ENC_NA); ipx_tree = proto_item_add_subtree(ti, ett_ipx); } str=ep_address_to_str(&pinfo->net_src); hidden_item = proto_tree_add_string(ipx_tree, hf_ipx_src, tvb, 0, 0, str); PROTO_ITEM_SET_HIDDEN(hidden_item); hidden_item = proto_tree_add_string(ipx_tree, hf_ipx_addr, tvb, 0, 0, str); PROTO_ITEM_SET_HIDDEN(hidden_item); str=ep_address_to_str(&pinfo->net_dst); hidden_item = proto_tree_add_string(ipx_tree, hf_ipx_dst, tvb, 0, 0, str); PROTO_ITEM_SET_HIDDEN(hidden_item); hidden_item = proto_tree_add_string(ipx_tree, hf_ipx_addr, tvb, 0, 0, str); PROTO_ITEM_SET_HIDDEN(hidden_item); proto_tree_add_item(ipx_tree, hf_ipx_checksum, tvb, 0, 2, ENC_BIG_ENDIAN); proto_tree_add_uint_format(ipx_tree, hf_ipx_len, tvb, 2, 2, ipxh->ipx_length, "Length: %d bytes", ipxh->ipx_length); ipx_hops = tvb_get_guint8(tvb, 4); proto_tree_add_uint_format(ipx_tree, hf_ipx_hops, tvb, 4, 1, ipx_hops, "Transport Control: %d hops", ipx_hops); proto_tree_add_uint(ipx_tree, hf_ipx_packet_type, tvb, 5, 1, ipxh->ipx_type); /* Destination */ ipx_dnet = tvb_get_ntohl(tvb, 6); proto_tree_add_ipxnet(ipx_tree, hf_ipx_dnet, tvb, 6, 4, ipx_dnet); hidden_item = proto_tree_add_ipxnet(ipx_tree, hf_ipx_net, tvb, 6, 4, ipx_dnet); PROTO_ITEM_SET_HIDDEN(hidden_item); proto_tree_add_item(ipx_tree, hf_ipx_dnode, tvb, 10, 6, ENC_NA); hidden_item = proto_tree_add_item(ipx_tree, hf_ipx_node, tvb, 10, 6, ENC_NA); PROTO_ITEM_SET_HIDDEN(hidden_item); proto_tree_add_uint(ipx_tree, hf_ipx_dsocket, tvb, 16, 2, ipxh->ipx_dsocket); hidden_item = proto_tree_add_uint(ipx_tree, hf_ipx_socket, tvb, 16, 2, ipxh->ipx_dsocket); PROTO_ITEM_SET_HIDDEN(hidden_item); /* Source */ ipx_snet = tvb_get_ntohl(tvb, 18); proto_tree_add_ipxnet(ipx_tree, hf_ipx_snet, tvb, 18, 4, ipx_snet); hidden_item = proto_tree_add_ipxnet(ipx_tree, hf_ipx_net, tvb, 18, 4, ipx_snet); PROTO_ITEM_SET_HIDDEN(hidden_item); proto_tree_add_item(ipx_tree, hf_ipx_snode, tvb, 22, 6, ENC_NA); hidden_item = proto_tree_add_item(ipx_tree, hf_ipx_node, tvb, 22, 6, ENC_NA); PROTO_ITEM_SET_HIDDEN(hidden_item); proto_tree_add_uint(ipx_tree, hf_ipx_ssocket, tvb, 28, 2, ipxh->ipx_ssocket); hidden_item = proto_tree_add_uint(ipx_tree, hf_ipx_socket, tvb, 28, 2, ipxh->ipx_ssocket); PROTO_ITEM_SET_HIDDEN(hidden_item); /* Make the next tvbuff */ next_tvb = tvb_new_subset_remaining(tvb, IPX_HEADER_LEN); /* * Let the subdissector know what type of IPX packet this is. */ pinfo->ipxptype = ipxh->ipx_type; /* * Check the socket numbers before we check the packet type; * we've seen non-NCP packets with a type of NCP and a * destination socket of IPX_SOCKET_IPX_MESSAGE, and SAP * packets with a type of NCP and a destination socket of * IPX_SOCKET_SAP. * * We've seen NCP packets with a type of NCP, a source socket of * IPX_SOCKET_NCP, and a destination socket of IPX_SOCKET_IPX_MESSAGE, * and we've seen NCP packets with a type of NCP, a source socket of * IPX_SOCKET_IPX_MESSAGE, and a destination socket of * IPX_SOCKET_NCP, so testing the destination socket first doesn't * always give the right answer. We've also seen SAP packets with * a source socket of IPX_SOCKET_SAP and a destination socket of * IPX_SOCKET_IPX_MESSAGE. * * Unfortunately, we've also seen packets with a source socket * of IPX_SOCKET_NWLINK_SMB_SERVER and a destination socket * of IPX_SOCKET_NWLINK_SMB_NAMEQUERY that were NMPI packets, * not SMB packets, so testing the lower-valued socket first * also doesn't always give the right answer. * * So we start out assuming we should test the lower-numbered * socket number first, but, if the higher-numbered socket is * IPX_SOCKET_NWLINK_SMB_NAMEQUERY, we assume that it's a * NMPI query, and test only that socket. */ if (ipxh->ipx_ssocket > ipxh->ipx_dsocket) { first_socket = ipxh->ipx_dsocket; second_socket = ipxh->ipx_ssocket; } else { first_socket = ipxh->ipx_ssocket; second_socket = ipxh->ipx_dsocket; } tap_queue_packet(ipx_tap, pinfo, ipxh); if (second_socket != IPX_SOCKET_NWLINK_SMB_NAMEQUERY) { if (dissector_try_uint(ipx_socket_dissector_table, first_socket, next_tvb, pinfo, tree)) return; } if (dissector_try_uint(ipx_socket_dissector_table, second_socket, next_tvb, pinfo, tree)) return; /* * Neither of them are known; try the packet type, which will * at least let us, for example, dissect SPX packets as SPX. */ if (dissector_try_uint(ipx_type_dissector_table, ipxh->ipx_type, next_tvb, pinfo, tree)) return; call_dissector(data_handle,next_tvb, pinfo, tree); }
static const gchar *gen_olc_key(guint16 lc_num, address *dst_addr, address *src_addr) { return ep_strdup_printf("%s/%s/%u", ep_address_to_str(dst_addr), ep_address_to_str(src_addr), lc_num); }
const char *get_conversation_filter(conv_item_t *conv_item, conv_direction_e direction) { char *sport, *dport; const char *str = "INVALID"; sport = ct_port_to_str(conv_item->ptype, conv_item->src_port); dport = ct_port_to_str(conv_item->ptype, conv_item->dst_port); switch(direction){ case CONV_DIR_A_TO_FROM_B: /* A <-> B */ str = ep_strdup_printf("%s==%s%s%s%s%s && %s==%s%s%s%s%s", conversation_get_filter_name(conv_item, CONV_FT_ANY_ADDRESS), ep_address_to_str(&conv_item->src_address), sport?" && ":"", sport?conversation_get_filter_name(conv_item, CONV_FT_ANY_PORT):"", sport?"==":"", sport?sport:"", conversation_get_filter_name(conv_item, CONV_FT_ANY_ADDRESS), ep_address_to_str(&conv_item->dst_address), dport?" && ":"", dport?conversation_get_filter_name(conv_item, CONV_FT_ANY_PORT):"", dport?"==":"", dport?dport:"" ); break; case CONV_DIR_A_TO_B: /* A --> B */ str = ep_strdup_printf("%s==%s%s%s%s%s && %s==%s%s%s%s%s", conversation_get_filter_name(conv_item, CONV_FT_SRC_ADDRESS), ep_address_to_str(&conv_item->src_address), sport?" && ":"", sport?conversation_get_filter_name(conv_item, CONV_FT_SRC_PORT):"", sport?"==":"", sport?sport:"", conversation_get_filter_name(conv_item, CONV_FT_DST_ADDRESS), ep_address_to_str(&conv_item->dst_address), dport?" && ":"", dport?conversation_get_filter_name(conv_item, CONV_FT_DST_PORT):"", dport?"==":"", dport?dport:"" ); break; case CONV_DIR_A_FROM_B: /* A <-- B */ str = ep_strdup_printf("%s==%s%s%s%s%s && %s==%s%s%s%s%s", conversation_get_filter_name(conv_item, CONV_FT_DST_ADDRESS), ep_address_to_str(&conv_item->src_address), sport?" && ":"", sport?conversation_get_filter_name(conv_item, CONV_FT_DST_PORT):"", sport?"==":"", sport?sport:"", conversation_get_filter_name(conv_item, CONV_FT_SRC_ADDRESS), ep_address_to_str(&conv_item->dst_address), dport?" && ":"", dport?conversation_get_filter_name(conv_item, CONV_FT_SRC_PORT):"", dport?"==":"", dport?dport:"" ); break; case CONV_DIR_A_TO_FROM_ANY: /* A <-> ANY */ str = ep_strdup_printf("%s==%s%s%s%s%s", conversation_get_filter_name(conv_item, CONV_FT_ANY_ADDRESS), ep_address_to_str(&conv_item->src_address), sport?" && ":"", sport?conversation_get_filter_name(conv_item, CONV_FT_ANY_PORT):"", sport?"==":"", sport?sport:"" ); break; case CONV_DIR_A_TO_ANY: /* A --> ANY */ str = ep_strdup_printf("%s==%s%s%s%s%s", conversation_get_filter_name(conv_item, CONV_FT_SRC_ADDRESS), ep_address_to_str(&conv_item->src_address), sport?" && ":"", sport?conversation_get_filter_name(conv_item, CONV_FT_SRC_PORT):"", sport?"==":"", sport?sport:"" ); break; case CONV_DIR_A_FROM_ANY: /* A <-- ANY */ str = ep_strdup_printf("%s==%s%s%s%s%s", conversation_get_filter_name(conv_item, CONV_FT_DST_ADDRESS), ep_address_to_str(&conv_item->src_address), sport?" && ":"", sport?conversation_get_filter_name(conv_item, CONV_FT_DST_PORT):"", sport?"==":"", sport?sport:"" ); break; case CONV_DIR_ANY_TO_FROM_B: /* ANY <-> B */ str = ep_strdup_printf("%s==%s%s%s%s%s", conversation_get_filter_name(conv_item, CONV_FT_ANY_ADDRESS), ep_address_to_str(&conv_item->dst_address), dport?" && ":"", dport?conversation_get_filter_name(conv_item, CONV_FT_ANY_PORT):"", dport?"==":"", dport?dport:"" ); break; case CONV_DIR_ANY_FROM_B: /* ANY <-- B */ str = ep_strdup_printf("%s==%s%s%s%s%s", conversation_get_filter_name(conv_item, CONV_FT_SRC_ADDRESS), ep_address_to_str(&conv_item->dst_address), dport?" && ":"", dport?conversation_get_filter_name(conv_item, CONV_FT_SRC_PORT):"", dport?"==":"", dport?dport:"" ); break; case CONV_DIR_ANY_TO_B: /* ANY --> B */ str = ep_strdup_printf("%s==%s%s%s%s%s", conversation_get_filter_name(conv_item, CONV_FT_DST_ADDRESS), ep_address_to_str(&conv_item->dst_address), dport?" && ":"", dport?conversation_get_filter_name(conv_item, CONV_FT_DST_PORT):"", dport?"==":"", dport?dport:"" ); break; default: break; } g_free(sport); g_free(dport); return str; }
void SCTPAssocAnalyseDialog::fillTabs() { /* Statistics Tab */ ui->checksumLabel->setText(selected_assoc->checksum_type); ui->data12Label->setText(QString("%1").arg(selected_assoc->n_data_chunks_ep1)); ui->bytes12Label->setText(QString("%1").arg(selected_assoc->n_data_bytes_ep1)); ui->data21Label->setText(QString("%1").arg(selected_assoc->n_data_chunks_ep2)); ui->bytes21Label->setText(QString("%1").arg(selected_assoc->n_data_bytes_ep2)); /* Tab Endpoint 1 */ if (selected_assoc->init) ui->labelEP1->setText(QString(tr("Complete list of IP-Addresses as provided in the INIT-Chunk"))); else if ((selected_assoc->initack) && (selected_assoc->initack_dir == 1)) ui->labelEP1->setText(QString(tr("Complete list of IP-Addresses as provided in the INITACK-Chunk"))); else ui->labelEP1->setText(QString(tr("List of used IP-Addresses"))); if (selected_assoc->addr1 != NULL) { GList *list; list = g_list_first(selected_assoc->addr1); while (list) { address *store; store = (address *)(list->data); if (store->type != AT_NONE) { if ((store->type == AT_IPv4) || (store->type == AT_IPv6)) { ui->listWidgetEP1->addItem(QString("%1").arg(ep_address_to_str(store))); } } list = g_list_next(list); } } else { return; } ui->label_221->setText(QString("%1").arg(selected_assoc->port1)); ui->label_222->setText(QString("0x%1").arg(selected_assoc->verification_tag1, 0, 16)); if ((selected_assoc->init) || ((selected_assoc->initack) && (selected_assoc->initack_dir == 1))) { ui->label_213->setText(QString(tr("Requested Number of Inbound Streams:"))); ui->label_223->setText(QString("%1").arg(selected_assoc->instream1)); ui->label_214->setText(QString(tr("Minimum Number of Inbound Streams:"))); ui->label_224->setText(QString("%1").arg(((selected_assoc->instream1 > selected_assoc->outstream2) ? selected_assoc->outstream2 : selected_assoc->instream1))); ui->label_215->setText(QString(tr("Provided Number of Outbound Streams:"))); ui->label_225->setText(QString("%1").arg(selected_assoc->outstream1)); ui->label_216->setText(QString(tr("Minimum Number of Outbound Streams:"))); ui->label_226->setText(QString("%1").arg(((selected_assoc->outstream1 > selected_assoc->instream2) ? selected_assoc->instream2 : selected_assoc->outstream1))); } else { ui->label_213->setText(QString(tr("Used Number of Inbound Streams:"))); ui->label_223->setText(QString("%1").arg(selected_assoc->instream1)); ui->label_214->setText(QString(tr("Used Number of Outbound Streams:"))); ui->label_224->setText(QString("%1").arg(selected_assoc->outstream1)); ui->label_215->setText(QString("")); ui->label_225->setText(QString("")); ui->label_216->setText(QString("")); ui->label_226->setText(QString("")); } /* Tab Endpoint 2 */ if ((selected_assoc->initack) && (selected_assoc->initack_dir == 2)) ui->labelEP2->setText(QString(tr("Complete list of IP-Addresses as provided in the INITACK-Chunk"))); else ui->labelEP2->setText(QString(tr("List of used IP-Addresses"))); if (selected_assoc->addr2 != NULL) { GList *list; list = g_list_first(selected_assoc->addr2); while (list) { address *store; store = (address *)(list->data); if (store->type != AT_NONE) { if ((store->type == AT_IPv4) || (store->type == AT_IPv6)) { ui->listWidgetEP2->addItem(QString("%1").arg(ep_address_to_str(store))); } } list = g_list_next(list); } } else { return; } ui->label_321->setText(QString("%1").arg(selected_assoc->port2)); ui->label_322->setText(QString("0x%1").arg(selected_assoc->verification_tag2, 0, 16)); if (selected_assoc->initack) { ui->label_313->setText(QString(tr("Requested Number of Inbound Streams:"))); ui->label_323->setText(QString("%1").arg(selected_assoc->instream2)); ui->label_314->setText(QString(tr("Minimum Number of Inbound Streams:"))); ui->label_324->setText(QString("%1").arg(((selected_assoc->instream2 > selected_assoc->outstream1) ? selected_assoc->outstream1 : selected_assoc->instream2))); ui->label_315->setText(QString(tr("Provided Number of Outbound Streams:"))); ui->label_325->setText(QString("%1").arg(selected_assoc->outstream2)); ui->label_316->setText(QString(tr("Minimum Number of Outbound Streams:"))); ui->label_326->setText(QString("%1").arg(((selected_assoc->outstream2 > selected_assoc->instream1) ? selected_assoc->instream1 : selected_assoc->outstream2))); } else { ui->label_313->setText(QString(tr("Used Number of Inbound Streams:"))); ui->label_323->setText(QString("%1").arg(selected_assoc->instream2)); ui->label_314->setText(QString(tr("Used Number of Outbound Streams:"))); ui->label_324->setText(QString("%1").arg(selected_assoc->outstream2)); ui->label_315->setText(QString("")); ui->label_325->setText(QString("")); ui->label_316->setText(QString("")); ui->label_326->setText(QString("")); } }
void ManageInterfacesDialog::addRemoteInterfaces(GList* rlist, remote_options *roptions) { GList *if_entry, *lt_entry; if_info_t *if_info; char *if_string = NULL; gchar *descr, *str = NULL, *link_type_name = NULL;; if_capabilities_t *caps; gint linktype_count; bool monitor_mode, found = false; GSList *curr_addr; int ips = 0; guint i; if_addr_t *addr; data_link_info_t *data_link_info; GString *ip_str; link_row *linkr = NULL; interface_t device; guint num_interfaces = global_capture_opts.all_ifaces->len; for (if_entry = g_list_first(rlist); if_entry != NULL; if_entry = g_list_next(if_entry)) { if_info = (if_info_t *)if_entry->data; for (i = 0; i < num_interfaces; i++) { device = g_array_index(global_capture_opts.all_ifaces, interface_t, i); if (device.hidden) continue; if (strcmp(device.name, if_info->name) == 0) { found = TRUE; break; } } if (found) { found = FALSE; continue; } ip_str = g_string_new(""); str = ""; ips = 0; device.name = g_strdup(if_info->name); /* Is this interface hidden and, if so, should we include it anyway? */ descr = capture_dev_user_descr_find(if_info->name); if (descr != NULL) { /* Yes, we have a user-supplied description; use it. */ if_string = g_strdup_printf("%s: %s", descr, if_info->name); g_free(descr); } else { /* No, we don't have a user-supplied description; did we get one from the OS or libpcap? */ if (if_info->vendor_description != NULL) { /* Yes - use it. */ if_string = g_strdup_printf("%s: %s", if_info->vendor_description, if_info->name); } else { /* No. */ if_string = g_strdup(if_info->name); } } /* else descr != NULL */ if (if_info->loopback) { device.display_name = g_strdup_printf("%s (loopback)", if_string); } else { device.display_name = g_strdup(if_string); } #if defined(_WIN32) || defined(HAVE_PCAP_CREATE) if ((device.buffer = capture_dev_user_buffersize_find(if_string)) == -1) { device.buffer = global_capture_opts.default_options.buffer_size; } #endif if ((device.pmode = capture_dev_user_pmode_find(if_string)) == -1) { device.pmode = global_capture_opts.default_options.promisc_mode; } device.has_snaplen = global_capture_opts.default_options.has_snaplen; if ((device.snaplen = capture_dev_user_snaplen_find(if_string)) == -1) { device.snaplen = global_capture_opts.default_options.snaplen; } device.cfilter = g_strdup(global_capture_opts.default_options.cfilter); monitor_mode = prefs_capture_device_monitor_mode(if_string); caps = capture_get_if_capabilities(if_string, monitor_mode, NULL, main_window_update); for (; (curr_addr = g_slist_nth(if_info->addrs, ips)) != NULL; ips++) { address addr_str; if (ips != 0) { g_string_append(ip_str, "\n"); } addr = (if_addr_t *)curr_addr->data; switch (addr->ifat_type) { case IF_AT_IPv4: SET_ADDRESS(&addr_str, AT_IPv4, 4, &addr->addr.ip4_addr); g_string_append(ip_str, ep_address_to_str(&addr_str)); break; case IF_AT_IPv6: SET_ADDRESS(&addr_str, AT_IPv6, 16, addr->addr.ip6_addr); g_string_append(ip_str, ep_address_to_str(&addr_str)); break; default: /* In case we add non-IP addresses */ break; } } /* for curr_addr */ linktype_count = 0; device.links = NULL; if (caps != NULL) { #ifdef HAVE_PCAP_CREATE device.monitor_mode_enabled = monitor_mode; device.monitor_mode_supported = caps->can_set_rfmon; #endif for (lt_entry = caps->data_link_types; lt_entry != NULL; lt_entry = g_list_next(lt_entry)) { data_link_info = (data_link_info_t *)lt_entry->data; linkr = (link_row *)g_malloc(sizeof(link_row)); /* * For link-layer types libpcap/WinPcap doesn't know about, the * name will be "DLT n", and the description will be null. * We mark those as unsupported, and don't allow them to be * used. */ if (data_link_info->description != NULL) { str = g_strdup_printf("%s", data_link_info->description); linkr->dlt = data_link_info->dlt; } else { str = g_strdup_printf("%s (not supported)", data_link_info->name); linkr->dlt = -1; } if (linktype_count == 0) { link_type_name = g_strdup(str); device.active_dlt = data_link_info->dlt; } linkr->name = g_strdup(str); g_free(str); device.links = g_list_append(device.links, linkr); linktype_count++; } /* for link_types */ } else { #if defined(HAVE_PCAP_CREATE) device.monitor_mode_enabled = FALSE; device.monitor_mode_supported = FALSE; #endif device.active_dlt = -1; link_type_name = g_strdup("default"); } device.addresses = g_strdup(ip_str->str); device.no_addresses = ips; device.remote_opts.src_type= roptions->src_type; if (device.remote_opts.src_type == CAPTURE_IFREMOTE) { device.local = FALSE; } device.remote_opts.remote_host_opts.remote_host = g_strdup(roptions->remote_host_opts.remote_host); device.remote_opts.remote_host_opts.remote_port = g_strdup(roptions->remote_host_opts.remote_port); device.remote_opts.remote_host_opts.auth_type = roptions->remote_host_opts.auth_type; device.remote_opts.remote_host_opts.auth_username = g_strdup(roptions->remote_host_opts.auth_username); device.remote_opts.remote_host_opts.auth_password = g_strdup(roptions->remote_host_opts.auth_password); device.remote_opts.remote_host_opts.datatx_udp = roptions->remote_host_opts.datatx_udp; device.remote_opts.remote_host_opts.nocap_rpcap = roptions->remote_host_opts.nocap_rpcap; device.remote_opts.remote_host_opts.nocap_local = roptions->remote_host_opts.nocap_local; #ifdef HAVE_PCAP_SETSAMPLING device.remote_opts.sampling_method = roptions->sampling_method; device.remote_opts.sampling_param = roptions->sampling_param; #endif device.selected = TRUE; global_capture_opts.num_selected++; g_array_append_val(global_capture_opts.all_ifaces, device); g_string_free(ip_str, TRUE); } /*for*/ showRemoteInterfaces(); }
} } UAT_RANGE_CB_DEF(uat_plen_records, packet_range, uat_plen_record_t) /* ip host stats_tree -- basic test */ static int st_node_ip = -1; static const gchar* st_str_ip = "IP Statistics/IP Addresses"; static void ip_hosts_stats_tree_init(stats_tree* st) { st_node_ip = stats_tree_create_node(st, st_str_ip, 0, TRUE); } static int ip_hosts_stats_tree_packet(stats_tree *st , packet_info *pinfo, epan_dissect_t *edt _U_, const void *p _U_) { tick_stat_node(st, st_str_ip, 0, FALSE); tick_stat_node(st, ep_address_to_str(&pinfo->net_src), st_node_ip, FALSE); tick_stat_node(st, ep_address_to_str(&pinfo->net_dst), st_node_ip, FALSE); return 1; } /* ip host stats_tree -- separate source and dest, test stats_tree flags */ static int st_node_ip_src = -1; static int st_node_ip_dst = -1; static const gchar* st_str_ip_srcdst = "IP Statistics/Source and Dest IP Addresses"; static const gchar* st_str_ip_src = "Source IP Addresses"; static const gchar* st_str_ip_dst = "Destination IP Addresses"; static void ip_srcdst_stats_tree_init(stats_tree* st) { /* create one tree branch for source */ st_node_ip_src = stats_tree_create_node(st, st_str_ip_src, 0, TRUE);