![Gerald Combs](/assets/img/avatar_default.png)
Add the wireless toolbar to the Qt UI. Start adding AirPcap support to ui/80211_utils. Add FCS validation routines to ws80211_utils. Move a bunch of AirPcap routines that require epan from caputils to ui/gtk. They were required for driver key management, which we'll leave to the AirPcap Control Panel in the Qt UI. Move frequency-utils to wsutil. Change-Id: I44446758046621d183f5c2ba9f6526bf01e084f1 Reviewed-on: https://code.wireshark.org/review/8910 Petri-Dish: Gerald Combs <gerald@wireshark.org> Tested-by: Petri Dish Buildbot <buildbot-no-reply@wireshark.org> Reviewed-by: Gerald Combs <gerald@wireshark.org>
306 lines
8.4 KiB
C
306 lines
8.4 KiB
C
/* airpcap_utils.h
|
|
* Declarations of utility routines for the "Airpcap" dialog widgets
|
|
*
|
|
* Giorgio Tino <giorgio.tino@cacetech.com>
|
|
* Copyright (c) CACE Technologies, LLC 2006
|
|
*
|
|
* Wireshark - Network traffic analyzer
|
|
* By Gerald Combs <gerald@wireshark.org>
|
|
* Copyright 1998 Gerald Combs
|
|
*
|
|
* This program is free software; you can redistribute it and/or
|
|
* modify it under the terms of the GNU General Public License
|
|
* as published by the Free Software Foundation; either version 2
|
|
* of the License, or (at your option) any later version.
|
|
*
|
|
* This program is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
* GNU General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU General Public License
|
|
* along with this program; if not, write to the Free Software
|
|
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
|
*/
|
|
|
|
#ifndef __AIRPCAP_GUI_UTILS_H__
|
|
#define __AIRPCAP_GUI_UTILS_H__
|
|
|
|
#define AIRPCAP_VALIDATION_TYPE_NAME_ALL "All Frames"
|
|
#define AIRPCAP_VALIDATION_TYPE_NAME_CORRECT "Valid Frames"
|
|
#define AIRPCAP_VALIDATION_TYPE_NAME_CORRUPT "Invalid Frames"
|
|
#define AIRPCAP_VALIDATION_TYPE_NAME_UNKNOWN "Unknown"
|
|
|
|
#define AIRPCAP_LINK_TYPE_NAME_802_11_ONLY "802.11 Only"
|
|
#define AIRPCAP_LINK_TYPE_NAME_802_11_PLUS_RADIO "802.11 + Radio"
|
|
#define AIRPCAP_LINK_TYPE_NAME_802_11_PLUS_PPI "802.11 + PPI"
|
|
#define AIRPCAP_LINK_TYPE_NAME_UNKNOWN "Unknown"
|
|
|
|
#define AIRPCAP_LINK_TYPE_NUM_802_11_ONLY 0
|
|
#define AIRPCAP_LINK_TYPE_NUM_802_11_PLUS_RADIO 1
|
|
#define AIRPCAP_LINK_TYPE_NUM_802_11_PLUS_PPI 2
|
|
|
|
#define AIRPCAP_DECRYPTION_TYPE_STRING_WIRESHARK "Wireshark"
|
|
#define AIRPCAP_DECRYPTION_TYPE_STRING_AIRPCAP "Driver"
|
|
#define AIRPCAP_DECRYPTION_TYPE_STRING_NONE "None"
|
|
|
|
/* Key list columns */
|
|
enum {
|
|
KL_COL_TYPE,
|
|
KL_COL_KEY,
|
|
KL_COL_SSID,
|
|
KL_NUM_COLS
|
|
};
|
|
|
|
/* Controls the releay of settings back to the adapter. */
|
|
extern gboolean change_airpcap_settings;
|
|
|
|
/*
|
|
* set up the airpcap toolbar for the new capture interface
|
|
*/
|
|
void
|
|
airpcap_set_toolbar_start_capture(airpcap_if_info_t* if_info);
|
|
|
|
/*
|
|
* Set up the airpcap toolbar for the new capture interface
|
|
*/
|
|
void
|
|
airpcap_set_toolbar_stop_capture(airpcap_if_info_t* if_info);
|
|
|
|
/*
|
|
* Add a key (string) to the given list
|
|
*/
|
|
void
|
|
airpcap_add_key_to_list(GtkListStore *key_list_store, gchar* type, gchar* key, gchar* ssid);
|
|
|
|
/*
|
|
* Fill the list with the keys
|
|
*/
|
|
void
|
|
airpcap_fill_key_list(GtkListStore *key_list_store);
|
|
|
|
/*
|
|
* Function used to retrieve the AirpcapValidationType given the string name.
|
|
*/
|
|
AirpcapValidationType
|
|
airpcap_get_validation_type(const gchar* name);
|
|
|
|
/*
|
|
* Function used to retrieve the string name given an AirpcapValidationType.
|
|
*/
|
|
const gchar*
|
|
airpcap_get_validation_name(AirpcapValidationType vt);
|
|
|
|
/*
|
|
* Return an appropriate combo box entry number for the given an AirpcapValidationType.
|
|
*/
|
|
gint
|
|
airpcap_get_validation_combo_entry(AirpcapValidationType vt);
|
|
|
|
/*
|
|
* Returns the AirpcapLinkType corresponding to the given string name.
|
|
*/
|
|
AirpcapLinkType
|
|
airpcap_get_link_type(const gchar* name);
|
|
|
|
/*
|
|
* Returns the string name corresponding to the given AirpcapLinkType.
|
|
*/
|
|
const gchar*
|
|
airpcap_get_link_name(AirpcapLinkType lt);
|
|
|
|
/*
|
|
* Sets the entry of the validation combo using the AirpcapValidationType.
|
|
*/
|
|
void
|
|
airpcap_validation_type_combo_set_by_type(GtkWidget* c,AirpcapValidationType type);
|
|
|
|
/*
|
|
* Update channel offset combo box to 'offset'.
|
|
*/
|
|
void
|
|
airpcap_update_channel_offset_combo(airpcap_if_info_t* if_info, guint32 ch_freq, GtkWidget *channel_offset_cb, gboolean set);
|
|
|
|
|
|
/*
|
|
* Retrieve the guint corresponding to the given string (channel only, handle with care!)
|
|
*/
|
|
gchar*
|
|
airpcap_get_channel_name(guint n);
|
|
|
|
/*
|
|
* Set the combo box entry string given an guint channel number
|
|
*/
|
|
void
|
|
airpcap_channel_combo_set_by_frequency(GtkWidget* w,guint channel);
|
|
|
|
/** Respond to the user changing the channel combo box.
|
|
* Update the active interface channel and update the offset
|
|
* combo box.
|
|
* Requires AirPcap globals.
|
|
*
|
|
* @param channel_cb The channel GtkComboBox
|
|
* @param channel_offset_cb The channel offset GtkComboBox
|
|
*/
|
|
void
|
|
airpcap_channel_changed_set_cb(GtkWidget *channel_cb, gpointer channel_offset_cb);
|
|
|
|
/** Respond to the user changing the channel combo box.
|
|
* Update the offset combo box but not the channel.
|
|
* Requires AirPcap globals.
|
|
*
|
|
* @param channel_cb The channel GtkComboBox
|
|
* @param channel_offset_cb The channel offset GtkComboBox
|
|
*/
|
|
void
|
|
airpcap_channel_changed_noset_cb(GtkWidget *channel_cb, gpointer channel_offset_cb);
|
|
|
|
/** Respond to the user changing the channel offset combo box.
|
|
* Update the active interface channel offset.
|
|
* Requires AirPcap globals.
|
|
*
|
|
* @param channel_offset_cb The channel offset GtkComboBox
|
|
* @param data Unused
|
|
*/
|
|
void
|
|
airpcap_channel_offset_changed_cb(GtkWidget *channel_offset_cb, gpointer data);
|
|
|
|
/*
|
|
* Returns '1' if this is the "Any" adapter, '0' otherwise
|
|
*/
|
|
int
|
|
airpcap_if_is_any(airpcap_if_info_t* if_info);
|
|
|
|
/*
|
|
* Update channel combo box. If the airpcap interface is "Any", the combo box will be disabled.
|
|
*/
|
|
void
|
|
airpcap_update_channel_combo(GtkWidget* channel_cb, airpcap_if_info_t* if_info);
|
|
|
|
/*
|
|
* This function will take the current keys (widget list), specified for the
|
|
* current adapter, and save them as default for ALL the others.
|
|
*/
|
|
void
|
|
airpcap_read_and_save_decryption_keys_from_list_store(GtkListStore* key_list_store, airpcap_if_info_t* info_if, GList* if_list);
|
|
|
|
/*
|
|
* This function will load from the preferences file ALL the
|
|
* keys (WEP, WPA and WPA_BIN) and will set them as default for
|
|
* each adapter. To do this, it will save the keys in the registry...
|
|
*/
|
|
void
|
|
airpcap_load_decryption_keys(GList* if_list);
|
|
|
|
/*
|
|
* This function will load from the preferences file ALL the
|
|
* keys (WEP, WPA and WPA_BIN) and will set them as default for
|
|
* each adapter. To do this, it will save the keys in the registry...
|
|
*/
|
|
gboolean
|
|
airpcap_check_decryption_keys(GList* if_list);
|
|
|
|
/*
|
|
* This function will set the gibven GList of decryption_key_t structures
|
|
* as the defoult for both Wireshark and the AirPcap adapters...
|
|
*/
|
|
void
|
|
airpcap_save_decryption_keys(GList* key_list, GList* adapters_list);
|
|
|
|
/*
|
|
* This function is used to enable/disable the toolbar widgets
|
|
* depending on the type of interface selected...
|
|
*/
|
|
void
|
|
airpcap_enable_toolbar_widgets(GtkWidget* w, gboolean en);
|
|
|
|
/*
|
|
* Returns the default airpcap interface of a list, NULL if list is empty
|
|
*/
|
|
airpcap_if_info_t*
|
|
airpcap_get_default_if(GList* airpcap_if_list);
|
|
|
|
/*
|
|
* DECRYPTION KEYS FUNCTIONS
|
|
*/
|
|
|
|
/*
|
|
* Retrieves a GList of decryption_key_t structures containing infos about the
|
|
* keys for the given adapter... returns NULL if no keys are found.
|
|
*/
|
|
GList*
|
|
get_airpcap_device_keys(airpcap_if_info_t* if_info);
|
|
|
|
/*
|
|
* Retrieves a GList of decryption_key_t structures containing infos about the
|
|
* keys for the global AirPcap driver... returns NULL if no keys are found.
|
|
*/
|
|
GList*
|
|
get_airpcap_driver_keys(void);
|
|
|
|
/*
|
|
* Returns the list of the decryption keys specified for wireshark, NULL if
|
|
* no key is found
|
|
*/
|
|
GList*
|
|
get_wireshark_keys(void);
|
|
|
|
/*
|
|
* Tests if two collection of keys are equal or not, to be considered equals, they have to
|
|
* contain the same keys in the SAME ORDER! (If both lists are NULL, which means empty will
|
|
* return TRUE)
|
|
*/
|
|
gboolean
|
|
key_lists_are_equal(GList* list1, GList* list2);
|
|
|
|
/*
|
|
* Merges two lists of keys. If a key is found multiple times, it will just appear once!
|
|
*/
|
|
GList*
|
|
merge_key_list(GList* list1, GList* list2);
|
|
|
|
/*
|
|
* If the given key is contained in the list, returns TRUE.
|
|
* Returns FALSE otherwise.
|
|
*/
|
|
gboolean
|
|
key_is_in_list(decryption_key_t *dk,GList *list);
|
|
|
|
/*
|
|
* Returns TRUE if keys are equals, FALSE otherwise
|
|
*/
|
|
gboolean
|
|
keys_are_equals(decryption_key_t *k1,decryption_key_t *k2);
|
|
|
|
/*
|
|
* Use this function to free a key list.
|
|
*/
|
|
void
|
|
free_key_list(GList *list);
|
|
|
|
/*
|
|
* Returns TRUE if the Wireshark decryption is active, FALSE otherwise
|
|
*/
|
|
gboolean
|
|
wireshark_decryption_on(void);
|
|
|
|
/*
|
|
* Returns TRUE if the AirPcap decryption for the current adapter is active, FALSE otherwise
|
|
*/
|
|
gboolean
|
|
airpcap_decryption_on(void);
|
|
|
|
/*
|
|
* Enables decryption for Wireshark if on_off is TRUE, disables it otherwise.
|
|
*/
|
|
void
|
|
set_wireshark_decryption(gboolean on_off);
|
|
|
|
/*
|
|
* Enables decryption for all the adapters if on_off is TRUE, disables it otherwise.
|
|
*/
|
|
gboolean
|
|
set_airpcap_decryption(gboolean on_off);
|
|
|
|
#endif
|