+static void handle_master_probe(const void *packet,size_t gotlen,const struct sockaddr_in *sockaddr_in_from)
+{
+GHashTable *got_hash;
+gpointer got_unique_gpointer;
+gpointer hostip_gpointer;
+guint32 hostip_guint32;
+
+ g_return_if_fail(packet!=NULL);
+ g_return_if_fail(sockaddr_in_from!=NULL);
+
+ if (!probe)
+ return;
+
+ if (!(got_hash=packet_disassembly(packet,gotlen)))
+ return;
+ if (!(g_hash_table_lookup_extended(
+ got_hash, /* hash_table */
+ GUINT_TO_POINTER(PACKET_ELEM_TYPE_DATA_GUINT32), /* lookup_key */
+ NULL, /* orig_key */
+ &got_unique_gpointer))) {
+err_packet_disassembly_destroy_got_hash:
+ packet_disassembly_destroy(got_hash);
+ return;
+ }
+ if (GPOINTER_TO_UINT(got_unique_gpointer)!=probe_unique)
+ goto err_packet_disassembly_destroy_got_hash;
+ if (!(g_hash_table_lookup_extended(
+ got_hash, /* hash_table */
+ GUINT_TO_POINTER(PACKET_ELEM_TYPE_CLIENT_INADDR), /* lookup_key */
+ NULL, /* orig_key */
+ &hostip_gpointer)))
+ goto err_packet_disassembly_destroy_got_hash;
+ hostip_guint32=GPOINTER_TO_UINT(hostip_gpointer);
+ packet_disassembly_destroy(got_hash);
+
+ client_destroy(probe);
+ if (network_notify_hostip)
+ (*network_notify_hostip)(hostip_guint32);
+}
+