diff options
Diffstat (limited to 'gtk/airpcap_dlg.c')
-rw-r--r-- | gtk/airpcap_dlg.c | 374 |
1 files changed, 116 insertions, 258 deletions
diff --git a/gtk/airpcap_dlg.c b/gtk/airpcap_dlg.c index ab92fa39fc..dd4881efa6 100644 --- a/gtk/airpcap_dlg.c +++ b/gtk/airpcap_dlg.c @@ -24,6 +24,7 @@ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ + #ifdef HAVE_CONFIG_H # include "config.h" #endif @@ -39,6 +40,7 @@ #include <epan/filesystem.h> #include <epan/prefs.h> #include <epan/prefs-int.h> +#include <epan/crypt/wep-wpadefs.h> #include <pcap.h> @@ -375,8 +377,7 @@ static void on_channel_en_changed(GtkWidget *w _U_, gpointer data) { const gchar *s; - - s = gtk_entry_get_text(GTK_ENTRY(w)); + ULONG ch_freq; if ( !block_advanced_signals && (data != NULL) && (w != NULL) ) { @@ -385,244 +386,65 @@ on_channel_en_changed(GtkWidget *w _U_, gpointer data) { if (airpcap_if_selected != NULL) { - airpcap_if_selected->channel = airpcap_get_channel_number(s); + ch_freq = airpcap_get_frequency_from_str(s); + airpcap_if_active->channelInfo.Frequency = ch_freq; airpcap_if_selected->saved = FALSE; + airpcap_update_channel_offset_cb(airpcap_if_selected, ch_freq, GTK_WIDGET(data)); } } } } /* - * Changed callback for the capture type combobox + * Changed callback for the channel offset combobox */ static void -on_capture_type_en_changed(GtkWidget *w _U_, gpointer data) +on_channel_offset_cb_changed(GtkWidget *w _U_, gpointer data) { const gchar *s; - - s = gtk_entry_get_text(GTK_ENTRY(w)); + gchar offset; if ( !block_advanced_signals && (data != NULL) && (w != NULL) ) { + s = gtk_entry_get_text(GTK_ENTRY(w)); if ((g_strcasecmp("",s))) { - airpcap_if_selected->linkType = airpcap_get_link_type(s); - airpcap_if_selected->saved = FALSE; + if (airpcap_if_selected != NULL) + { + sscanf(s,"%d",&offset); + airpcap_if_selected->channelInfo.ExtChannel = offset; + airpcap_if_selected->saved = FALSE; + } } } } /* - * Activate callback for the adapter combobox + * Changed callback for the capture type combobox */ static void -combo_if_activate_cb(GtkWidget *entry _U_, gpointer data) -{ -} - -/* - * Pop-up window, used to ask the user if he wants to save the selected interface settings - * when closing the window. - */ -void -airpcap_ask_for_save_before_closing(GtkWidget *w _U_, gpointer data) -{ - GtkWidget* dialog; - - dialog = simple_dialog(ESD_TYPE_CONFIRMATION, ESD_BTNS_SAVE_DONTSAVE_CANCEL, - PRIMARY_TEXT_START "Save settings before closing?" PRIMARY_TEXT_END "\n\n" - "If you close the window without saving, changes you made will\nbe discarded."); - simple_dialog_set_cb(dialog, airpcap_dialog_save_before_closing_cb, data); -} - -/* user confirmed the "Save settings..." dialog */ -void -airpcap_dialog_save_before_closing_cb(gpointer dialog _U_, gint btn, gpointer data) +on_capture_type_en_changed(GtkWidget *w _U_, gpointer data) { - GtkWidget* interface_combo; - GtkWidget* key_ls; + const gchar *s; - /* I need the combo box entry */ - interface_combo = GTK_WIDGET(OBJECT_GET_DATA(GTK_WIDGET(data),AIRPCAP_ADVANCED_INTERFACE_KEY)); - key_ls = GTK_WIDGET(OBJECT_GET_DATA(data,AIRPCAP_ADVANCED_KEYLIST_KEY)); + s = gtk_entry_get_text(GTK_ENTRY(w)); - switch (btn) + if ( !block_advanced_signals && (data != NULL) && (w != NULL) ) { - case(ESD_BTN_SAVE): - /* save interface and exit */ - airpcap_add_keys_from_list(key_ls,airpcap_if_selected); - airpcap_save_selected_if_configuration(airpcap_if_selected); - /* Remove gtk timeout */ - gtk_timeout_remove(airpcap_if_selected->tag); - break; - case(ESD_BTN_DONT_SAVE): - /* exit without saving */ - break; - - default: - break; + if ((g_strcasecmp("",s))) + { + airpcap_if_selected->linkType = airpcap_get_link_type(s); + airpcap_if_selected->saved = FALSE; + } } } /* - * Pop-up window, used to ask the user if he wants to save the selected interface settings - * when changing the interface in the advanced dialog box + * Activate callback for the adapter combobox */ -void -airpcap_ask_for_save(GtkWidget *entry _U_, gpointer data) -{ - GtkWidget* dialog; - - dialog = simple_dialog(ESD_TYPE_CONFIRMATION, ESD_BTNS_SAVE_DONTSAVE_CANCEL, - PRIMARY_TEXT_START "Save settings before changing interface?" PRIMARY_TEXT_END "\n\n" - "If you change interface without saving, changes you made will\nbe discarded."); - simple_dialog_set_cb(dialog, airpcap_dialog_save_cb, data); - -} - -/* user confirmed the "Save settings..." dialog */ -void -airpcap_dialog_save_cb(GtkWidget* dialog _U_, gint btn, gpointer data) +static void +combo_if_activate_cb(GtkWidget *entry _U_, gpointer data) { - GtkWidget* interface_combo; - GtkWidget* key_ls; - - /* I need the combo box entry */ - interface_combo = GTK_WIDGET(OBJECT_GET_DATA(GTK_WIDGET(data),AIRPCAP_ADVANCED_INTERFACE_KEY)); - key_ls = GTK_WIDGET(OBJECT_GET_DATA(data,AIRPCAP_ADVANCED_KEYLIST_KEY)); - - switch (btn) - { - case(ESD_BTN_SAVE): - /* save interface and change */ - airpcap_add_keys_from_list(key_ls,airpcap_if_selected); - airpcap_save_selected_if_configuration(airpcap_if_selected); - /* Remove gtk timeout */ - gtk_timeout_remove(airpcap_if_selected->tag); - airpcap_change_if(GTK_COMBO(interface_combo)->entry,data); - break; - case(ESD_BTN_DONT_SAVE): - /* change interface without saving */ - airpcap_change_if(GTK_COMBO(interface_combo)->entry,data); - break; - case(ESD_BTN_CANCEL): - /* don't change interface and don't save */ - break; - default: - break; - } -} - -/* - * Function used to change the selected interface and advanced dialog box - */ -void -airpcap_change_if(GtkWidget *entry _U_, gpointer data) -{ - const gchar *s; - gchar *channel_s; - gchar *capture_s; - GtkWidget *main_w; - - GtkWidget *interface_combo; - GtkWidget *channel_combo; - GtkWidget *capture_combo; - GtkWidget *crc_check; - GtkWidget *wrong_crc_combo; - GtkWidget *blink_bt; - GtkWidget *key_ls; - - airpcap_if_info_t *new_if; - - /* Retrieve the GUI object pointers */ - main_w = GTK_WIDGET(data); - interface_combo = GTK_WIDGET(OBJECT_GET_DATA(main_w,AIRPCAP_ADVANCED_INTERFACE_KEY)); - channel_combo = GTK_WIDGET(OBJECT_GET_DATA(main_w,AIRPCAP_ADVANCED_CHANNEL_KEY)); - capture_combo = GTK_WIDGET(OBJECT_GET_DATA(main_w,AIRPCAP_ADVANCED_LINK_TYPE_KEY)); - crc_check = GTK_WIDGET(OBJECT_GET_DATA(main_w,AIRPCAP_ADVANCED_FCS_CHECK_KEY)); - wrong_crc_combo = GTK_WIDGET(OBJECT_GET_DATA(main_w,AIRPCAP_ADVANCED_FCS_FILTER_KEY)); - blink_bt = GTK_WIDGET(OBJECT_GET_DATA(main_w,AIRPCAP_ADVANCED_BLINK_KEY)); - key_ls = GTK_WIDGET(OBJECT_GET_DATA(main_w,AIRPCAP_ADVANCED_KEYLIST_KEY)); - - s = gtk_entry_get_text(GTK_ENTRY(entry)); - - /* Select actual interface*/ - new_if = get_airpcap_if_from_description(airpcap_if_list, s); - - /* And change the GUI according to it... */ - /* This should always happen, but it seems that the callback is - * called twice, the first time with an 'empty' text... so it - * will return NULL! - */ - if (new_if != NULL) - { - airpcap_if_selected = new_if; - - new_if = NULL; - /* I need to 'block' signals to widgets or they will receive a signal now - and will change twice */ - block_advanced_signals = TRUE; - - /* Blink button */ - if (airpcap_if_selected->blinking) - { -#if GTK_MAJOR_VERSION >= 2 - gtk_button_set_label(GTK_BUTTON(blink_bt),"Stop Blinking"); -#else - gtk_label_set_text(GTK_LABEL(GTK_BIN(blink_bt)->child),"Stop Blinking"); -#endif - } - else - { -#if GTK_MAJOR_VERSION >= 2 - gtk_button_set_label(GTK_BUTTON(blink_bt)," Blink Led "); -#else - gtk_label_set_text(GTK_LABEL(GTK_BIN(blink_bt)->child)," Blink Led "); -#endif - } - - /* Channel combo */ - channel_s = g_strdup_printf("%d",airpcap_if_selected->channel); - if (channel_combo != NULL) /* this event seems to happen when combo is still NULL */ - gtk_entry_set_text(GTK_ENTRY(GTK_COMBO(channel_combo)->entry), channel_s); - - /* Link Layer combo */ - capture_s = NULL; - if (airpcap_if_selected->linkType == AIRPCAP_LT_802_11) - { - capture_s = g_strdup_printf(AIRPCAP_LINK_TYPE_NAME_802_11_ONLY); - if (capture_combo != NULL) /* this event seems to happen when combo is still NULL */ - gtk_entry_set_text(GTK_ENTRY(GTK_COMBO(capture_combo)->entry), capture_s); - } - else if (airpcap_if_selected->linkType == AIRPCAP_LT_802_11_PLUS_RADIO) - { - capture_s = g_strdup_printf(AIRPCAP_LINK_TYPE_NAME_802_11_PLUS_RADIO); - if (capture_combo != NULL) /* this event seems to happen when combo is still NULL */ - gtk_entry_set_text(GTK_ENTRY(GTK_COMBO(capture_combo)->entry), capture_s); - } - - /* Fcs Presence check box */ - if (airpcap_if_selected->IsFcsPresent) - gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(crc_check),TRUE); - else - gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(crc_check),FALSE); - - /* Wrong Crc combo box */ - if (airpcap_if_selected->CrcValidationOn == AIRPCAP_VT_ACCEPT_EVERYTHING) - gtk_entry_set_text(GTK_ENTRY(GTK_COMBO(wrong_crc_combo)->entry),AIRPCAP_VALIDATION_TYPE_NAME_ALL); - else if (airpcap_if_selected->CrcValidationOn == AIRPCAP_VT_ACCEPT_CORRECT_FRAMES) - gtk_entry_set_text(GTK_ENTRY(GTK_COMBO(wrong_crc_combo)->entry),AIRPCAP_VALIDATION_TYPE_NAME_CORRECT); - else if (airpcap_if_selected->CrcValidationOn == AIRPCAP_VT_ACCEPT_CORRUPT_FRAMES) - gtk_entry_set_text(GTK_ENTRY(GTK_COMBO(wrong_crc_combo)->entry),AIRPCAP_VALIDATION_TYPE_NAME_CORRUPT); - - /* Remove old keys */ - gtk_list_remove_items(GTK_LIST(key_ls),GTK_LIST(key_ls)->children); - /* Add new keys */ - airpcap_fill_key_list(key_ls); - - /* Enable the signals again */ - block_advanced_signals = FALSE; - } } /* @@ -636,7 +458,7 @@ void update_blink(gpointer data _U_) sel = (airpcap_if_info_t*)data; - ad = airpcap_if_open(get_airpcap_name_from_description(airpcap_if_list, sel->description), ebuf); + ad = airpcap_if_open(sel->name, ebuf); if (ad) { if (sel->led) @@ -834,7 +656,7 @@ on_key_management_apply_bt_clicked(GtkWidget *button, gpointer data _U_) update_decryption_mode_cm(toolbar_cm); /* Redissect all the packets, and re-evaluate the display filter. */ -/** //cf_redissect_packets(&cfile); **/ +/** cf_redissect_packets(&cfile); **/ } /* * Callback for the Wireless Advanced Settings 'Apply' button. @@ -849,6 +671,7 @@ on_advanced_apply_bt_clicked(GtkWidget *button, gpointer data _U_) GtkWidget *toolbar, *toolbar_if_lb, *toolbar_channel_cm, + *toolbar_channel_offset_cb, *toolbar_wrong_crc_cm; /* retrieve main window */ @@ -857,9 +680,10 @@ on_advanced_apply_bt_clicked(GtkWidget *button, gpointer data _U_) toolbar = GTK_WIDGET(OBJECT_GET_DATA(main_w,AIRPCAP_TOOLBAR_KEY)); /* retrieve toolbar info */ - toolbar_if_lb = GTK_WIDGET(OBJECT_GET_DATA(toolbar,AIRPCAP_TOOLBAR_INTERFACE_KEY)); - toolbar_channel_cm = GTK_WIDGET(OBJECT_GET_DATA(toolbar,AIRPCAP_TOOLBAR_CHANNEL_KEY)); - toolbar_wrong_crc_cm = GTK_WIDGET(OBJECT_GET_DATA(toolbar,AIRPCAP_TOOLBAR_FCS_FILTER_KEY)); + toolbar_if_lb = GTK_WIDGET(OBJECT_GET_DATA(toolbar,AIRPCAP_TOOLBAR_INTERFACE_KEY)); + toolbar_channel_cm = GTK_WIDGET(OBJECT_GET_DATA(toolbar,AIRPCAP_TOOLBAR_CHANNEL_KEY)); + toolbar_channel_offset_cb = GTK_WIDGET(OBJECT_GET_DATA(toolbar,AIRPCAP_TOOLBAR_CHANNEL_OFFSET_KEY)); + toolbar_wrong_crc_cm = GTK_WIDGET(OBJECT_GET_DATA(toolbar,AIRPCAP_TOOLBAR_FCS_FILTER_KEY)); /* Save the configuration (for all ) */ airpcap_save_selected_if_configuration(airpcap_if_selected); @@ -868,8 +692,9 @@ on_advanced_apply_bt_clicked(GtkWidget *button, gpointer data _U_) if ( g_strcasecmp(airpcap_if_selected->description,airpcap_if_active->description) == 0) { gtk_label_set_text(GTK_LABEL(toolbar_if_lb), g_strdup_printf("%s %s\t","Current Wireless Interface: #",airpcap_get_if_string_number(airpcap_if_selected))); - airpcap_update_channel_combo(GTK_WIDGET(toolbar_channel_cm),airpcap_if_selected); - airpcap_validation_type_combo_set_by_type(toolbar_wrong_crc_cm,airpcap_if_selected->CrcValidationOn); + airpcap_update_channel_combo(GTK_WIDGET(toolbar_channel_cm),airpcap_if_selected); + airpcap_update_channel_offset_combo_entry(GTK_WIDGET(toolbar_channel_offset_cb),airpcap_if_selected->channelInfo.ExtChannel); + airpcap_validation_type_combo_set_by_type(toolbar_wrong_crc_cm,airpcap_if_selected->CrcValidationOn); } } @@ -2101,7 +1926,7 @@ update_decryption_mode_list(GtkWidget *w) enable_decryption_cb_items = g_list_append (enable_decryption_cb_items, AIRPCAP_DECRYPTION_TYPE_STRING_NONE); enable_decryption_cb_items = g_list_append (enable_decryption_cb_items, AIRPCAP_DECRYPTION_TYPE_STRING_WIRESHARK); - if (airpcap_if_list != NULL) + if (airpcap_if_list != NULL && g_list_length(airpcap_if_list) > 0) { enable_decryption_cb_items = g_list_append (enable_decryption_cb_items, AIRPCAP_DECRYPTION_TYPE_STRING_AIRPCAP); } @@ -2144,11 +1969,13 @@ display_airpcap_advanced_cb(GtkWidget *w, gpointer data) GtkWidget *basic_parameters_al; GtkWidget *basic_parameters_tb; GtkWidget *channel_lb; + GtkWidget *channel_offset_lb; GtkWidget *capture_type_lb; GtkWidget *channel_cm; GList *channel_cm_items = NULL; GtkWidget *channel_en; GtkWidget *capture_type_cm; + GtkWidget *channel_offset_cb; GList *capture_type_cm_items = NULL; GtkWidget *capture_type_en; GtkWidget *fcs_ck; @@ -2166,6 +1993,9 @@ display_airpcap_advanced_cb(GtkWidget *w, gpointer data) GtkWidget *apply_bt; GtkWidget *cancel_bt; + /* for loop counter */ + guint i; + /* widgets in the toolbar */ GtkWidget *toolbar, *toolbar_if_lb, @@ -2324,32 +2154,49 @@ display_airpcap_advanced_cb(GtkWidget *w, gpointer data) capture_type_lb = gtk_label_new ("Capture Type:"); gtk_widget_set_name (capture_type_lb, "capture_type_lb"); gtk_widget_show (capture_type_lb); - gtk_table_attach (GTK_TABLE (basic_parameters_tb), capture_type_lb, 0, 1, 1, - 2, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), + gtk_table_attach (GTK_TABLE (basic_parameters_tb), capture_type_lb, 0, 1, 2, + 3, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0); gtk_misc_set_alignment (GTK_MISC (capture_type_lb), 0, 0.5); + /* Start: Channel offset label */ + channel_offset_lb = gtk_label_new ("Channel Offset:"); + gtk_widget_set_name (channel_offset_lb, "channel_offset_lb"); + gtk_widget_show (channel_offset_lb); + gtk_table_attach (GTK_TABLE (basic_parameters_tb), channel_offset_lb, 0, 1, 1, 2, + (GtkAttachOptions) (GTK_FILL), + (GtkAttachOptions) (0), 0, 0); + gtk_misc_set_alignment (GTK_MISC (channel_offset_lb), 0, 0.5); + /* End: Channel offset label */ + + /* Start: Channel offset combo box */ + channel_offset_cb = gtk_combo_new(); + gtk_widget_set_name (channel_offset_cb, "channel_offset_cb"); + gtk_editable_set_editable(GTK_EDITABLE(GTK_COMBO(channel_offset_cb)->entry),FALSE); + + airpcap_update_channel_offset_cb(airpcap_if_selected, airpcap_if_selected->channelInfo.Frequency, channel_offset_cb); + airpcap_update_channel_offset_combo_entry(channel_offset_cb, airpcap_if_selected->channelInfo.ExtChannel); + + gtk_widget_show(channel_offset_cb); + + gtk_table_attach (GTK_TABLE (basic_parameters_tb), channel_offset_cb, 1, 2, 1, 2, + (GtkAttachOptions) (GTK_FILL), + (GtkAttachOptions) (0), 0, 0); + /* End: Channel offset combo box */ + channel_cm = gtk_combo_new (); gtk_widget_set_name (channel_cm, "channel_cm"); gtk_widget_show (channel_cm); gtk_table_attach (GTK_TABLE (basic_parameters_tb), channel_cm, 1, 2, 0, 1, (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), (GtkAttachOptions) (0), 0, 0); - channel_cm_items = g_list_append (channel_cm_items, (gpointer) "1"); - channel_cm_items = g_list_append (channel_cm_items, (gpointer) "2"); - channel_cm_items = g_list_append (channel_cm_items, (gpointer) "3"); - channel_cm_items = g_list_append (channel_cm_items, (gpointer) "4"); - channel_cm_items = g_list_append (channel_cm_items, (gpointer) "5"); - channel_cm_items = g_list_append (channel_cm_items, (gpointer) "6"); - channel_cm_items = g_list_append (channel_cm_items, (gpointer) "7"); - channel_cm_items = g_list_append (channel_cm_items, (gpointer) "8"); - channel_cm_items = g_list_append (channel_cm_items, (gpointer) "9"); - channel_cm_items = g_list_append (channel_cm_items, (gpointer) "10"); - channel_cm_items = g_list_append (channel_cm_items, (gpointer) "11"); - channel_cm_items = g_list_append (channel_cm_items, (gpointer) "12"); - channel_cm_items = g_list_append (channel_cm_items, (gpointer) "13"); - channel_cm_items = g_list_append (channel_cm_items, (gpointer) "14"); - gtk_combo_set_popdown_strings (GTK_COMBO (channel_cm), channel_cm_items); + + if (airpcap_if_selected != NULL && airpcap_if_selected->pSupportedChannels != NULL && airpcap_if_selected->numSupportedChannels > 0){ + for (i = 0; i<(airpcap_if_selected->numSupportedChannels); i++){ + channel_cm_items = g_list_append(channel_cm_items, airpcap_get_channelstr_from_freq(airpcap_if_selected->pSupportedChannels[i].Frequency)); + } + gtk_combo_set_popdown_strings( GTK_COMBO(channel_cm), channel_cm_items) ; + } /* Select the first entry */ if (airpcap_if_selected != NULL) @@ -2367,13 +2214,18 @@ display_airpcap_advanced_cb(GtkWidget *w, gpointer data) capture_type_cm = gtk_combo_new (); gtk_widget_set_name (capture_type_cm, "capture_type_cm"); gtk_widget_show (capture_type_cm); - gtk_table_attach (GTK_TABLE (basic_parameters_tb), capture_type_cm, 1, 2, 1, - 2, (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), + gtk_table_attach (GTK_TABLE (basic_parameters_tb), capture_type_cm, 1, 2, 2, + 3, (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), (GtkAttachOptions) (0), 0, 0); capture_type_cm_items = g_list_append (capture_type_cm_items, (gpointer) AIRPCAP_LINK_TYPE_NAME_802_11_ONLY); capture_type_cm_items = g_list_append (capture_type_cm_items, (gpointer) AIRPCAP_LINK_TYPE_NAME_802_11_PLUS_RADIO); + + if (airpcap_get_dll_state() == AIRPCAP_DLL_OK){ + capture_type_cm_items = + g_list_append (capture_type_cm_items, (gpointer) AIRPCAP_LINK_TYPE_NAME_802_11_PLUS_PPI); + } gtk_combo_set_popdown_strings (GTK_COMBO (capture_type_cm), capture_type_cm_items); @@ -2381,10 +2233,14 @@ display_airpcap_advanced_cb(GtkWidget *w, gpointer data) capture_s = NULL; if (airpcap_if_selected != NULL) { - if (airpcap_if_selected->linkType == AIRPCAP_LT_802_11) - capture_s = g_strdup_printf("%s",AIRPCAP_LINK_TYPE_NAME_802_11_ONLY); - else if (airpcap_if_selected->linkType == AIRPCAP_LT_802_11_PLUS_RADIO) - capture_s = g_strdup_printf("%s",AIRPCAP_LINK_TYPE_NAME_802_11_PLUS_RADIO); + if (airpcap_if_selected->linkType == AIRPCAP_LT_802_11){ + capture_s = g_strdup_printf("%s",AIRPCAP_LINK_TYPE_NAME_802_11_ONLY); + }else if (airpcap_if_selected->linkType == AIRPCAP_LT_802_11_PLUS_RADIO){ + capture_s = g_strdup_printf("%s",AIRPCAP_LINK_TYPE_NAME_802_11_PLUS_RADIO); + }else if (airpcap_if_selected->linkType == AIRPCAP_LT_802_11_PLUS_PPI){ + capture_s = g_strdup_printf("%s",AIRPCAP_LINK_TYPE_NAME_802_11_PLUS_PPI); + } + if (capture_s != NULL) gtk_entry_set_text(GTK_ENTRY(GTK_COMBO(capture_type_cm)->entry), capture_s); } g_free(capture_s); @@ -2421,7 +2277,7 @@ display_airpcap_advanced_cb(GtkWidget *w, gpointer data) "basic_parameters_fcs_h_box"); gtk_widget_show (basic_parameters_fcs_h_box); gtk_table_attach (GTK_TABLE (basic_parameters_tb), - basic_parameters_fcs_h_box, 2, 3, 1, 2, + basic_parameters_fcs_h_box, 2, 3, 2, 3, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (GTK_FILL), 3, 0); @@ -2492,7 +2348,7 @@ display_airpcap_advanced_cb(GtkWidget *w, gpointer data) #endif gtk_widget_set_name (reset_configuration_bt, "reset_configuration_bt"); /* gtk_widget_show (reset_configuration_bt); */ - gtk_container_add (GTK_CONTAINER (left_h_button_box), + gtk_container_add (GTK_CONTAINER (low_buttons_h_box), reset_configuration_bt); GTK_WIDGET_SET_FLAGS (reset_configuration_bt, GTK_CAN_DEFAULT); @@ -2520,7 +2376,8 @@ display_airpcap_advanced_cb(GtkWidget *w, gpointer data) SIGNAL_CONNECT (blink_bt, "clicked", on_what_s_this_bt_clicked, airpcap_advanced_w); } - SIGNAL_CONNECT (channel_en, "changed",on_channel_en_changed, airpcap_advanced_w); + SIGNAL_CONNECT (channel_en, "changed",on_channel_en_changed, channel_offset_cb); + SIGNAL_CONNECT (GTK_COMBO(channel_offset_cb)->entry, "changed",on_channel_offset_cb_changed, airpcap_advanced_w); SIGNAL_CONNECT (capture_type_en, "changed",on_capture_type_en_changed, airpcap_advanced_w); SIGNAL_CONNECT (fcs_ck, "toggled",on_fcs_ck_toggled, airpcap_advanced_w); SIGNAL_CONNECT (fcs_filter_en, "changed",on_fcs_filter_en_changed, airpcap_advanced_w); @@ -2577,26 +2434,28 @@ on_advanced_ok_bt_clicked(GtkWidget *button, gpointer data _U_) GtkWidget *toolbar, *toolbar_if_lb, *toolbar_channel_cm, + *toolbar_channel_offset_cb, *toolbar_wrong_crc_cm, *advanced_bt; /* Retrieve the GUI object pointers */ - airpcap_advanced_w = GTK_WIDGET(data); - interface_combo = GTK_WIDGET(OBJECT_GET_DATA(airpcap_advanced_w,AIRPCAP_ADVANCED_INTERFACE_KEY)); - channel_combo = GTK_WIDGET(OBJECT_GET_DATA(airpcap_advanced_w,AIRPCAP_ADVANCED_CHANNEL_KEY)); - capture_combo = GTK_WIDGET(OBJECT_GET_DATA(airpcap_advanced_w,AIRPCAP_ADVANCED_LINK_TYPE_KEY)); - crc_check = GTK_WIDGET(OBJECT_GET_DATA(airpcap_advanced_w,AIRPCAP_ADVANCED_FCS_CHECK_KEY)); - wrong_crc_combo = GTK_WIDGET(OBJECT_GET_DATA(airpcap_advanced_w,AIRPCAP_ADVANCED_FCS_FILTER_KEY)); - blink_bt = GTK_WIDGET(OBJECT_GET_DATA(airpcap_advanced_w,AIRPCAP_ADVANCED_BLINK_KEY)); - cancel_bt = GTK_WIDGET(OBJECT_GET_DATA(airpcap_advanced_w,AIRPCAP_ADVANCED_CANCEL_KEY)); - ok_bt = GTK_WIDGET(OBJECT_GET_DATA(airpcap_advanced_w,AIRPCAP_ADVANCED_OK_KEY)); - advanced_bt = GTK_WIDGET(OBJECT_GET_DATA(airpcap_advanced_w,AIRPCAP_ADVANCED_KEY)); - - toolbar = GTK_WIDGET(OBJECT_GET_DATA(airpcap_advanced_w,AIRPCAP_TOOLBAR_KEY)); + airpcap_advanced_w = GTK_WIDGET(data); + interface_combo = GTK_WIDGET(OBJECT_GET_DATA(airpcap_advanced_w,AIRPCAP_ADVANCED_INTERFACE_KEY)); + channel_combo = GTK_WIDGET(OBJECT_GET_DATA(airpcap_advanced_w,AIRPCAP_ADVANCED_CHANNEL_KEY)); + capture_combo = GTK_WIDGET(OBJECT_GET_DATA(airpcap_advanced_w,AIRPCAP_ADVANCED_LINK_TYPE_KEY)); + crc_check = GTK_WIDGET(OBJECT_GET_DATA(airpcap_advanced_w,AIRPCAP_ADVANCED_FCS_CHECK_KEY)); + wrong_crc_combo = GTK_WIDGET(OBJECT_GET_DATA(airpcap_advanced_w,AIRPCAP_ADVANCED_FCS_FILTER_KEY)); + blink_bt = GTK_WIDGET(OBJECT_GET_DATA(airpcap_advanced_w,AIRPCAP_ADVANCED_BLINK_KEY)); + cancel_bt = GTK_WIDGET(OBJECT_GET_DATA(airpcap_advanced_w,AIRPCAP_ADVANCED_CANCEL_KEY)); + ok_bt = GTK_WIDGET(OBJECT_GET_DATA(airpcap_advanced_w,AIRPCAP_ADVANCED_OK_KEY)); + advanced_bt = GTK_WIDGET(OBJECT_GET_DATA(airpcap_advanced_w,AIRPCAP_ADVANCED_KEY)); + + toolbar = GTK_WIDGET(OBJECT_GET_DATA(airpcap_advanced_w,AIRPCAP_TOOLBAR_KEY)); /* retrieve toolbar info */ toolbar_if_lb = GTK_WIDGET(OBJECT_GET_DATA(toolbar,AIRPCAP_TOOLBAR_INTERFACE_KEY)); toolbar_channel_cm = GTK_WIDGET(OBJECT_GET_DATA(toolbar,AIRPCAP_TOOLBAR_CHANNEL_KEY)); + toolbar_channel_offset_cb = GTK_WIDGET(OBJECT_GET_DATA(toolbar,AIRPCAP_TOOLBAR_CHANNEL_OFFSET_KEY)); toolbar_wrong_crc_cm = GTK_WIDGET(OBJECT_GET_DATA(toolbar,AIRPCAP_TOOLBAR_FCS_FILTER_KEY)); /* Stop blinking ALL leds (go through the airpcap_if_list) */ @@ -2624,14 +2483,13 @@ on_advanced_ok_bt_clicked(GtkWidget *button, gpointer data _U_) if ( g_strcasecmp(airpcap_if_selected->description,airpcap_if_active->description) == 0) { gtk_label_set_text(GTK_LABEL(toolbar_if_lb), g_strdup_printf("%s %s\t","Current Wireless Interface: #",airpcap_get_if_string_number(airpcap_if_selected))); - airpcap_update_channel_combo(GTK_WIDGET(toolbar_channel_cm),airpcap_if_selected); - + airpcap_update_channel_offset_combo_entry(GTK_WIDGET(toolbar_channel_offset_cb),airpcap_if_selected->channelInfo.ExtChannel); airpcap_validation_type_combo_set_by_type(toolbar_wrong_crc_cm,airpcap_if_selected->CrcValidationOn); } /* If interface active is airpcap, set sensitive TRUE for airpcap toolbar */ - if ( get_airpcap_if_by_name(airpcap_if_list,airpcap_if_active->description) != NULL) + if ( get_airpcap_if_from_name(airpcap_if_list,airpcap_if_active->description) != NULL) { airpcap_set_toolbar_start_capture(airpcap_if_active); } @@ -3102,11 +2960,11 @@ on_key_management_ok_bt_clicked(GtkWidget *button, gpointer data _U_) write_prefs_to_file(); /* If interface active is airpcap, set sensitive TRUE for airpcap toolbar */ - if (airpcap_if_list != NULL) + if (airpcap_if_list != NULL && g_list_length(airpcap_if_list) > 0) { if (airpcap_if_active != NULL) { - if ( get_airpcap_if_by_name(airpcap_if_list,airpcap_if_active->description) != NULL) + if ( get_airpcap_if_from_name(airpcap_if_list,airpcap_if_active->description) != NULL) { airpcap_set_toolbar_start_capture(airpcap_if_active); } |