Um, no, the problem with the Leopard x86 build is that we first do a
[obnox/wireshark/wip.git] / gtk / capture_dlg.c
index d9b4e3bc224a12977ab30988f75ee93c25de3384..405cd173e183668e86d85ffdd8656f51b45ca8ef 100644 (file)
@@ -85,7 +85,7 @@
 #define E_CAP_SNAP_CB_KEY               "cap_snap_cb"
 #define E_CAP_LT_OM_KEY                 "cap_lt_om"
 #define E_CAP_LT_OM_LABEL_KEY           "cap_lt_om_label"
-#if defined(_WIN32) || defined(HAVE_PCAP_SET_BUFFER_SIZE)
+#if defined(_WIN32) || defined(HAVE_PCAP_CREATE)
 #define E_CAP_BUFFER_SIZE_SB_KEY        "cap_buffer_size_sb"
 #endif
 #define E_CAP_SNAP_SB_KEY               "cap_snap_sb"
@@ -252,7 +252,7 @@ set_link_type_list(GtkWidget *linktype_om, GtkWidget *entry)
   GList *if_list;
   GList *if_entry;
   if_info_t *if_info;
-  GList *lt_list;
+  if_capabilities_t *caps;
   int err;
   GtkWidget *lt_menu, *lt_menu_item;
   GList *lt_entry;
@@ -310,7 +310,7 @@ set_link_type_list(GtkWidget *linktype_om, GtkWidget *entry)
    * does the code we use if "pcap_findalldevs()" isn't available), but
    * should contain all the local devices on which you can capture.
    */
-  lt_list = NULL;
+  caps = NULL;
   if (*if_name != '\0') {
     /*
      * Try to get the list of known interfaces.
@@ -342,7 +342,7 @@ set_link_type_list(GtkWidget *linktype_om, GtkWidget *entry)
           if (iftype == CAPTURE_IFLOCAL)
             /* Not able to get link-layer for remote interfaces */
 #endif
-         lt_list = capture_pcap_linktype_list(if_name, NULL);
+         caps = capture_get_if_capabilities(if_name, FALSE, NULL);
 
          /* create string of list of IP addresses of this interface */
          for (; (curr_addr = g_slist_nth(if_info->addrs, ips)) != NULL; ips++) {
@@ -385,35 +385,37 @@ set_link_type_list(GtkWidget *linktype_om, GtkWidget *entry)
   num_supported_link_types = 0;
   linktype_select = 0;
   linktype_count = 0;
-  for (lt_entry = lt_list; lt_entry != NULL; lt_entry = g_list_next(lt_entry)) {
-    data_link_info = lt_entry->data;
-    if (data_link_info->description != NULL) {
-      lt_menu_item = gtk_menu_item_new_with_label(data_link_info->description);
-      g_object_set_data(G_OBJECT(lt_menu_item), E_CAP_LT_OM_KEY, linktype_om);
-      g_signal_connect(lt_menu_item, "activate", G_CALLBACK(select_link_type_cb),
-                     GINT_TO_POINTER(data_link_info->dlt));
-      num_supported_link_types++;
-    } else {
-      /* Not supported - tell them about it but don't let them select it. */
-      linktype_menu_label = g_strdup_printf("%s (not supported)",
-                                           data_link_info->name);
-      lt_menu_item = gtk_menu_item_new_with_label(linktype_menu_label);
-      g_free(linktype_menu_label);
-    }
-    if (data_link_info->dlt == linktype) {
-      /* Found a matching dlt, selecth this */
-      linktype_select = linktype_count;
+  if (caps != NULL) {
+    for (lt_entry = caps->data_link_types; lt_entry != NULL;
+         lt_entry = g_list_next(lt_entry)) {
+      data_link_info = lt_entry->data;
+      if (data_link_info->description != NULL) {
+        lt_menu_item = gtk_menu_item_new_with_label(data_link_info->description);
+        g_object_set_data(G_OBJECT(lt_menu_item), E_CAP_LT_OM_KEY, linktype_om);
+        g_signal_connect(lt_menu_item, "activate", G_CALLBACK(select_link_type_cb),
+                         GINT_TO_POINTER(data_link_info->dlt));
+        num_supported_link_types++;
+      } else {
+        /* Not supported - tell them about it but don't let them select it. */
+        linktype_menu_label = g_strdup_printf("%s (not supported)",
+                                              data_link_info->name);
+        lt_menu_item = gtk_menu_item_new_with_label(linktype_menu_label);
+        g_free(linktype_menu_label);
+      }
+      if (data_link_info->dlt == linktype) {
+        /* Found a matching dlt, selecth this */
+        linktype_select = linktype_count;
+      }
+      gtk_menu_shell_append(GTK_MENU_SHELL(lt_menu), lt_menu_item);
+      gtk_widget_show(lt_menu_item);
+      linktype_count++;
     }
-    gtk_menu_shell_append(GTK_MENU_SHELL(lt_menu), lt_menu_item);
-    gtk_widget_show(lt_menu_item);
-    linktype_count++;
+    free_if_capabilities(caps);
   }
-  if (lt_list == NULL) {
+  if (linktype_count == 0) {
     lt_menu_item = gtk_menu_item_new_with_label("(not supported)");
     gtk_menu_shell_append(GTK_MENU_SHELL(lt_menu), lt_menu_item);
     gtk_widget_show(lt_menu_item);
-  } else {
-    free_pcap_linktype_list(lt_list);
   }
   gtk_option_menu_set_menu(GTK_OPTION_MENU(linktype_om), lt_menu);
   gtk_widget_set_sensitive(linktype_lb, num_supported_link_types >= 2);
@@ -1471,7 +1473,7 @@ capture_prep_cb(GtkWidget *w _U_, gpointer d _U_)
   int           row;
   int           err;
   gchar         *err_str;
-#if defined(_WIN32) || defined(HAVE_PCAP_SET_BUFFER_SIZE)
+#if defined(_WIN32) || defined(HAVE_PCAP_CREATE)
   GtkAdjustment *buffer_size_adj;
   GtkWidget     *buffer_size_lb, *buffer_size_sb, *buffer_size_hb;
 #endif
@@ -1658,7 +1660,7 @@ capture_prep_cb(GtkWidget *w _U_, gpointer d _U_)
   gtk_container_set_border_width(GTK_CONTAINER(left_vb), 0);
   gtk_box_pack_start(GTK_BOX(main_hb), left_vb, TRUE, TRUE, 0);
 
-#if defined (HAVE_AIRPCAP) || defined (HAVE_PCAP_REMOTE) || defined (HAVE_PCAP_SET_BUFFER_SIZE)
+#if defined (HAVE_AIRPCAP) || defined (HAVE_PCAP_REMOTE) || defined (HAVE_PCAP_CREATE)
   /* Avoid adding the right vbox if not needed, because it steals 3 pixels */
   right_vb = gtk_vbox_new(FALSE, 3);
   gtk_container_set_border_width(GTK_CONTAINER(right_vb), 0);
@@ -1820,7 +1822,7 @@ capture_prep_cb(GtkWidget *w _U_, gpointer d _U_)
   gtk_widget_show(remote_bt);
 #endif
 
-#if defined(_WIN32) || defined(HAVE_PCAP_SET_BUFFER_SIZE)
+#if defined(_WIN32) || defined(HAVE_PCAP_CREATE)
   buffer_size_hb = gtk_hbox_new(FALSE, 3);
   buffer_size_lb = gtk_label_new("Buffer size:");
   gtk_box_pack_start (GTK_BOX(buffer_size_hb), buffer_size_lb, FALSE, FALSE, 0);
@@ -2179,7 +2181,7 @@ capture_prep_cb(GtkWidget *w _U_, gpointer d _U_)
   g_object_set_data(G_OBJECT(cap_open_w), E_CAP_SNAP_CB_KEY, snap_cb);
   g_object_set_data(G_OBJECT(cap_open_w), E_CAP_SNAP_SB_KEY, snap_sb);
   g_object_set_data(G_OBJECT(cap_open_w), E_CAP_LT_OM_KEY, linktype_om);
-#if defined(_WIN32) || defined(HAVE_PCAP_SET_BUFFER_SIZE)
+#if defined(_WIN32) || defined(HAVE_PCAP_CREATE)
   g_object_set_data(G_OBJECT(cap_open_w), E_CAP_BUFFER_SIZE_SB_KEY, buffer_size_sb);
 #endif
   g_object_set_data(G_OBJECT(cap_open_w), E_CAP_PROMISC_KEY, promisc_cb);
@@ -2547,7 +2549,7 @@ capture_dlg_prep(gpointer parent_w) {
 #ifdef HAVE_PCAP_REMOTE
   GtkWidget *iftype_cbx;
 #endif
-#if defined(_WIN32) || defined(HAVE_PCAP_SET_BUFFER_SIZE)
+#if defined(_WIN32) || defined(HAVE_PCAP_CREATE)
   GtkWidget *buffer_size_sb;
 #endif
   gchar *entry_text;
@@ -2566,7 +2568,7 @@ capture_dlg_prep(gpointer parent_w) {
   snap_cb    = (GtkWidget *) g_object_get_data(G_OBJECT(parent_w), E_CAP_SNAP_CB_KEY);
   snap_sb    = (GtkWidget *) g_object_get_data(G_OBJECT(parent_w), E_CAP_SNAP_SB_KEY);
   linktype_om  = (GtkWidget *) g_object_get_data(G_OBJECT(parent_w), E_CAP_LT_OM_KEY);
-#if defined(_WIN32) || defined(HAVE_PCAP_SET_BUFFER_SIZE)
+#if defined(_WIN32) || defined(HAVE_PCAP_CREATE)
   buffer_size_sb = (GtkWidget *) g_object_get_data(G_OBJECT(parent_w), E_CAP_BUFFER_SIZE_SB_KEY);
 #endif
   promisc_cb = (GtkWidget *) g_object_get_data(G_OBJECT(parent_w), E_CAP_PROMISC_KEY);
@@ -2627,7 +2629,7 @@ capture_dlg_prep(gpointer parent_w) {
     global_capture_opts.src_type = CAPTURE_IFREMOTE;
 #endif
 
-#if defined(_WIN32) || defined(HAVE_PCAP_SET_BUFFER_SIZE)
+#if defined(_WIN32) || defined(HAVE_PCAP_CREATE)
   global_capture_opts.buffer_size =
     gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(buffer_size_sb));
 #endif