/packETH-1.7/src/callbacks.c
C | 4797 lines | 3438 code | 926 blank | 433 comment | 670 complexity | cd80ae1ceb7d98ae003d3ff989a70d07 MD5 | raw file
Possible License(s): GPL-3.0
Large files files are truncated, but you can click here to view the full file
- /*
- * packETH - ethernet packet generator
- * By Miha Jemec <jemcek@gmail.com>
- * Copyright 2003 Miha Jemec, Iskratel
- *
- * 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
- *
- * callback.c - all callback routines
- *
- *
- */
- #define MAXNUMLOADPACKETS 1000
- #include <gtk/gtk.h>
- #include <stdio.h>
- #include <string.h>
- #include <stdlib.h>
- #include "function.h"
- #include "callbacks.h"
- #include "interface.h"
- #include "support.h"
- #include "loadpacket.h"
- #include "savepacket.h"
- #include <unistd.h>
- #include <sys/ioctl.h>
- #include <sys/socket.h>
- #include <net/if.h>
- #include <ctype.h>
- #include <math.h>
- static GtkWidget *file_menu = NULL;
- static GtkWidget *save_file_menu = NULL;
- static GtkWidget *database_file_menu = NULL;
- static GtkWidget *interface_dialog_menu = NULL;
- static GtkWidget *error_dialog_menu = NULL;
- static GtkWidget *about_dialog_menu = NULL;
- static GtkWidget *tos_dialog_menu = NULL;
- static GtkWidget *fragment_dialog_menu = NULL;
- static GtkWidget *selection1_dialog = NULL;
- static GtkWidget *udp_payload_dialog = NULL;
- extern unsigned char packet[1522];
- extern int number;
- extern int stop_flag;
- gint row_number;/* this is because i cant get the selected row number*/
- gchar iftext[20];
- gchar address_filename[100] = "addresslist";
- static GtkWidget *entry_field;
- static GtkWidget *entry_field_ip;
- static GtkWidget *entry_field_ipv6;
- static GtkWidget *entry_field_udp;
- static GtkWidget *entry_field_tos;
- static GtkWidget *entry_field_fragment;
- static GtkButton *btx;
- static gboolean IP_yes = FALSE;
- static gboolean IPv6_yes = FALSE;
- static gboolean MAC_yes = FALSE;
- static int load_select_nr = 0;
- int show_error_dialog = 1;
- void
- IP_packet_toggled (GtkToggleButton *togglebutton,
- gpointer user_data)
- {
- GtkWidget *nt2;
- GtkWidget *nt4;
- GtkWidget *rb1, *rb2, *rb3, *rb4, *rb5;
- GtkWidget *option_menu, *opt_value;
- GtkWidget *option_menu2, *opt_value2;
- GtkWidget *cbt;
-
- cbt = lookup_widget(GTK_WIDGET(togglebutton), "auto_get_mac_cbt");
- gtk_widget_set_sensitive (cbt, TRUE);
- /* eth II */
- option_menu = lookup_widget(GTK_WIDGET(togglebutton), "L_optmenu1_bt");
- opt_value = lookup_widget(GTK_WIDGET(togglebutton), "L_ethtype");
- gtk_option_menu_set_history (GTK_OPTION_MENU (option_menu), 0);
- gtk_entry_set_text(GTK_ENTRY(opt_value), "0800");
- /* eth 802.3 */
- option_menu2 = lookup_widget(GTK_WIDGET(togglebutton), "optionmenu6");
- opt_value2 = lookup_widget(GTK_WIDGET(togglebutton), "L_pid");
- gtk_option_menu_set_history (GTK_OPTION_MENU (option_menu2), 0);
- gtk_entry_set_text(GTK_ENTRY(opt_value2), "0800");
- /* open ipv4 page */
- nt2 = lookup_widget(GTK_WIDGET(togglebutton), "notebook2");
- gtk_notebook_set_page(GTK_NOTEBOOK(nt2), 0);
- /* what is next page */
- rb1 = lookup_widget(GTK_WIDGET(togglebutton), "tcp_bt");
- rb2 = lookup_widget(GTK_WIDGET(togglebutton), "udp_bt");
- rb3 = lookup_widget(GTK_WIDGET(togglebutton), "icmp_bt");
- rb4 = lookup_widget(GTK_WIDGET(togglebutton), "ip_user_data_bt");
- rb5 = lookup_widget(GTK_WIDGET(togglebutton), "igmp_bt");
- nt4 = lookup_widget(GTK_WIDGET(togglebutton), "notebook4");
- gtk_editable_set_editable(GTK_EDITABLE(opt_value), FALSE);
- gtk_editable_set_editable(GTK_EDITABLE(opt_value2), FALSE);
- if (GTK_TOGGLE_BUTTON(rb1)->active)
- gtk_notebook_set_page(GTK_NOTEBOOK(nt4), 1);
- else if (GTK_TOGGLE_BUTTON(rb2)->active)
- gtk_notebook_set_page(GTK_NOTEBOOK(nt4), 0);
- else if (GTK_TOGGLE_BUTTON(rb3)->active)
- gtk_notebook_set_page(GTK_NOTEBOOK(nt4), 2);
- else if (GTK_TOGGLE_BUTTON(rb5)->active)
- gtk_notebook_set_page(GTK_NOTEBOOK(nt4), 4);
- else
- gtk_notebook_set_page(GTK_NOTEBOOK(nt4), 3);
- }
- void
- on_arppkt_radiobt_toggled (GtkToggleButton *togglebutton,
- gpointer user_data)
- {
- GtkWidget *nt2, *nt4;
- GtkWidget *option_menu, *opt_value;
- GtkWidget *option_menu2, *opt_value2;
- GtkWidget *cbt;
-
- cbt = lookup_widget(GTK_WIDGET(togglebutton), "auto_get_mac_cbt");
- gtk_widget_set_sensitive (cbt, TRUE);
- /* for eth II */
- option_menu = lookup_widget(GTK_WIDGET(togglebutton), "L_optmenu1_bt");
- opt_value = lookup_widget(GTK_WIDGET(togglebutton), "L_ethtype");
- gtk_option_menu_set_history (GTK_OPTION_MENU (option_menu), 2);
- gtk_entry_set_text(GTK_ENTRY(opt_value), "0806");
- /* for eth 802.3 */
- option_menu2 = lookup_widget(GTK_WIDGET(togglebutton), "optionmenu6");
- opt_value2 = lookup_widget(GTK_WIDGET(togglebutton), "L_pid");
- gtk_option_menu_set_history (GTK_OPTION_MENU (option_menu2), 2);
- gtk_entry_set_text(GTK_ENTRY(opt_value2), "0806");
- /* open arp notebook page and empty notebook page for 4 layer */
- nt2 = lookup_widget(GTK_WIDGET(togglebutton), "notebook2");
- gtk_notebook_set_page(GTK_NOTEBOOK(nt2), 3);
- nt4 = lookup_widget(GTK_WIDGET(togglebutton), "notebook4");
- gtk_notebook_set_page(GTK_NOTEBOOK(nt4), 5);
- gtk_editable_set_editable(GTK_EDITABLE(opt_value), FALSE);
- gtk_editable_set_editable(GTK_EDITABLE(opt_value2), FALSE);
- }
- void
- on_usedef2_radibt_toggled (GtkToggleButton *togglebutton,
- gpointer user_data)
- {
- GtkWidget *nt2, *nt4;
- GtkWidget *option_menu, *opt_value;
- //GtkWidget *cbt;
-
- //cbt = lookup_widget(GTK_WIDGET(togglebutton), "auto_get_mac_cbt");
- //if (GTK_TOGGLE_BUTTON(cbt)->active) {
- // on_auto_get_mac_cbt_toggled(togglebutton, user_data);
- // gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (cbt), FALSE);
- // gtk_widget_set_sensitive (cbt, FALSE);
- //}
- //else
- // gtk_widget_set_sensitive (cbt, FALSE);
-
- /* for eth II */
- option_menu = lookup_widget(GTK_WIDGET(togglebutton), "L_optmenu1_bt");
- gtk_option_menu_set_history (GTK_OPTION_MENU (option_menu), 3);
- opt_value = lookup_widget(GTK_WIDGET(togglebutton), "L_ethtype");
- gtk_editable_set_editable(GTK_EDITABLE(opt_value), TRUE);
- gtk_entry_set_text(GTK_ENTRY(opt_value), "");
- /* for eth 802.3 */
- option_menu = lookup_widget(GTK_WIDGET(togglebutton), "optionmenu6");
- gtk_option_menu_set_history (GTK_OPTION_MENU (option_menu), 3);
- opt_value = lookup_widget(GTK_WIDGET(togglebutton), "L_pid");
- gtk_editable_set_editable(GTK_EDITABLE(opt_value), TRUE);
- gtk_entry_set_text(GTK_ENTRY(opt_value), "");
- /* set the correct notebooks */
- nt2 = lookup_widget(GTK_WIDGET(togglebutton), "notebook2");
- gtk_notebook_set_page(GTK_NOTEBOOK(nt2), 2);
- nt4 = lookup_widget(GTK_WIDGET(togglebutton), "notebook4");
- gtk_notebook_set_page(GTK_NOTEBOOK(nt4), 5);
- }
- void
- on_ver_II_bt_toggled (GtkToggleButton *togglebutton,
- gpointer user_data)
- {
- GtkWidget *nt1;
- GtkWidget *fr7;
- nt1 = lookup_widget(GTK_WIDGET(togglebutton), "notebook_ethtype");
- gtk_notebook_set_page(GTK_NOTEBOOK(nt1), 0);
- fr7 = lookup_widget(GTK_WIDGET(togglebutton), "frame7");
- gtk_widget_set_sensitive(fr7, FALSE);
- }
- void
- on_802_3_bt_toggled (GtkToggleButton *togglebutton,
- gpointer user_data)
- {
- GtkWidget *nt1;
- GtkWidget *fr7;
- nt1 = lookup_widget(GTK_WIDGET(togglebutton), "notebook_ethtype");
- gtk_notebook_set_page(GTK_NOTEBOOK(nt1), 1);
- fr7 = lookup_widget(GTK_WIDGET(togglebutton), "frame7");
- gtk_widget_set_sensitive(fr7, TRUE);
- }
- void
- on_802_1q_bt_clicked (GtkButton *button,
- gpointer user_data)
- {
- GtkWidget *fr6;
- fr6 = lookup_widget(GTK_WIDGET(button), "frame6");
- if (GTK_TOGGLE_BUTTON(button)->active)
- gtk_widget_set_sensitive(fr6, TRUE);
- else
- gtk_widget_set_sensitive(fr6, FALSE);
- }
- void
- on_L_8023_llc_tbt_toggled (GtkToggleButton *togglebutton,
- gpointer user_data)
- {
- GtkWidget *l_oui, *l_pid, *lbl_oui, *lbl_pid, *opt;
- l_oui = lookup_widget(GTK_WIDGET(togglebutton), "L_oui");
- l_pid = lookup_widget(GTK_WIDGET(togglebutton), "L_pid");
- lbl_oui = lookup_widget(GTK_WIDGET(togglebutton), "label_oui");
- lbl_pid = lookup_widget(GTK_WIDGET(togglebutton), "label_pid");
- lbl_pid = lookup_widget(GTK_WIDGET(togglebutton), "label_pid");
- opt = lookup_widget(GTK_WIDGET(togglebutton), "optionmenu6");
- gtk_entry_set_text(GTK_ENTRY(l_oui), "");
- gtk_entry_set_text(GTK_ENTRY(l_pid), "");
- gtk_widget_set_sensitive(l_oui, FALSE);
- gtk_widget_set_sensitive(l_pid, FALSE);
- gtk_widget_set_sensitive(lbl_oui, FALSE);
- gtk_widget_set_sensitive(lbl_pid, FALSE);
- gtk_widget_set_sensitive(opt, FALSE);
- }
- void
- on_L_8023_llcsnap_tbt_toggled (GtkToggleButton *togglebutton,
- gpointer user_data)
- {
- GtkWidget *l_oui, *l_pid, *lbl_oui, *lbl_pid, *opt, *menu, *menu_item;
- gint index;
- l_oui = lookup_widget(GTK_WIDGET(togglebutton), "L_oui");
- l_pid = lookup_widget(GTK_WIDGET(togglebutton), "L_pid");
- lbl_oui = lookup_widget(GTK_WIDGET(togglebutton), "label_oui");
- lbl_pid = lookup_widget(GTK_WIDGET(togglebutton), "label_pid");
- opt = lookup_widget(GTK_WIDGET(togglebutton), "optionmenu6");
- gtk_widget_set_sensitive(l_oui, TRUE);
- gtk_widget_set_sensitive(l_pid, TRUE);
- gtk_widget_set_sensitive(lbl_oui, TRUE);
- gtk_widget_set_sensitive(lbl_pid, TRUE);
- gtk_entry_set_text(GTK_ENTRY(l_oui), "000000");
- menu = GTK_OPTION_MENU(opt)->menu;
- menu_item = gtk_menu_get_active (GTK_MENU (menu));
- index = g_list_index (GTK_MENU_SHELL (menu)->children, menu_item);
- switch (index) {
- case 1: {
- gtk_entry_set_text(GTK_ENTRY(l_pid), "86DD");
- break;
- }
- case 2: {
- gtk_entry_set_text(GTK_ENTRY(l_pid), "0806");
- break;
- }
- case 3: {
- gtk_entry_set_text(GTK_ENTRY(l_pid), "");
- break;
- }
- default:
- gtk_entry_set_text(GTK_ENTRY(l_pid), "0800");
- }
- gtk_widget_set_sensitive(opt, TRUE);
- }
- void
- on_exit1_activate (GtkMenuItem *menuitem,
- gpointer user_data)
- {
- gtk_main_quit();
- }
- void
- on_about1_activate (GtkMenuItem *menuitem,
- gpointer user_data)
- {
- if (about_dialog_menu != NULL) {
- gdk_window_show(about_dialog_menu->window);
- gdk_window_raise(about_dialog_menu->window);
- return;
- }
- about_dialog_menu = create_about_dialog();
- gtk_widget_show(about_dialog_menu);
- }
- void
- on_window1_destroy (GtkObject *object,
- gpointer user_data)
- {
- gtk_main_quit();
- }
- void
- on_fileselection1_destroy (GtkObject *object,
- gpointer user_data)
- {
- file_menu = NULL;
- }
- /* button1 is the load button, so what this function will do depends on who called it:
- it can be one of the 4 basic windows: builder, gen-b, gen-s or gen-k.
- And there can be a call for this window from each of these windows too.
- */
- void
- on_ok_button1_clicked (GtkButton *button,
- gpointer user_data)
- {
- GtkWidget *notbk;
- gint page;
- FILE *file_p;
- gchar *fname /* , *fname2 */;
- char buff[101];
- fname = g_strdup(gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(lookup_widget(gtk_widget_get_toplevel(GTK_WIDGET(button)),"fileselection1"))));
- //fname2 = g_strdup(gtk_entry_get_text(GTK_ENTRY(GTK_FILE_SELECTION (user_data)->selection_entry)));
- if((file_p = fopen(fname, "r")) == NULL) {
- //printf("can not open file for reading\n");
- error("Error: can't open file for reading!");
- return;
- }
-
- /* now who called this function */
- switch (load_select_nr) {
- case 1: { /* this is the toolbar load button, we need to know which notebook is open */
- notbk = lookup_widget(GTK_WIDGET(btx), "notebook1");
- page = gtk_notebook_get_current_page(GTK_NOTEBOOK(notbk));
- if (page == 0) { /* so we have the build notebook open */
-
- if (load_data(btx, file_p, 1, 1) == -1) {
- /* calling previous function with last argument =1 means loading for builder */
- fclose(file_p);
- return;
- }
- break;
- }
- else if (page == 1) { /* it is the send build generator */
- if (load_gen_b_data(btx, file_p) == -1) {
- error("Error: wrong file format!");
- fclose(file_p);
- return;
- }
- break;
- }
- /* page with sequence generator is open */
- else if (page == 2) { /* it is the send build generator */
- if (load_gen_s_data(btx, file_p) == -1) {
- error("Error: wrong file format!");
- fclose(file_p);
- return;
- }
- break;
- }
- else if (page == 3) { /* it is the send pcap file generator */
- if (load_data(btx, file_p, 2, MAXNUMLOADPACKETS) == -1) {
- error("Error: wrong file format!");
- fclose(file_p);
- return;
- }
- break;
- }
- }
- /* next are the select buttons on the gen-s window */
- case 2: ;
- case 3: ;
- case 4: ;
- case 5: ;
- case 6: ;
- case 7: ;
- case 8: ;
- case 9: ;
- case 10: {
- //if (check_if_file_is_packet(file_p) == -1) {
- if (load_data(btx, file_p, 1, 1) == -1) {
- error("Error: wrong file format!");
- fclose(file_p);
- return;
- }
- gtk_entry_set_text(GTK_ENTRY(entry_field), fname);
- break;
- }
- }
- fclose(file_p);
- snprintf(buff, 100, " Parameters loaded from file %s", fname);
- statusbar_text(btx, buff);
- gtk_grab_remove(gtk_widget_get_toplevel(GTK_WIDGET(button)));
- gtk_widget_destroy(gtk_widget_get_toplevel(GTK_WIDGET(button)));
- }
- void
- on_cancel_button1_clicked (GtkButton *button,
- gpointer user_data)
- {
- gtk_grab_remove(gtk_widget_get_toplevel(GTK_WIDGET(button)));
- gtk_widget_destroy(gtk_widget_get_toplevel(GTK_WIDGET(button)));
- }
- void
- on_Load_button_clicked (GtkButton *button,
- gpointer user_data)
- {
- statusbar_text(button, "");
- if (file_menu != NULL) {
- gdk_window_show(file_menu->window);
- gdk_window_raise(file_menu->window);
- return;
- }
- file_menu = create_fileselection1();
- gtk_widget_show(file_menu);
- btx = button;
- load_select_nr = 1;
- }
- void
- on_Save_button_clicked (GtkButton *button,
- gpointer user_data)
- {
- statusbar_text(button, "");
- if (save_file_menu != NULL) {
- gdk_window_show(save_file_menu->window);
- gdk_window_raise(save_file_menu->window);
- return;
- }
- save_file_menu = create_fileselection2();
- gtk_widget_show(save_file_menu);
- btx = button;
- }
- /* pressing the ok button in the save dialog causes us to be here */
- void
- on_ok_button2_clicked (GtkButton *button,
- gpointer user_data)
- {
- GtkWidget *notbk;
- gint page;
- gchar *fname;
- FILE *file_p;
- char buff4[101];
- /* hm, first we should decide, what are we going to save: a packet, send_built parameters,
- * send_sequence parameters or send kernel parameters. I last three cases we only save
- * the values and not also the packets themself (only the names of the packet)
- * so let's check which notebook is open */
- notbk = lookup_widget(GTK_WIDGET(btx), "notebook1");
- page = gtk_notebook_get_current_page(GTK_NOTEBOOK(notbk));
- fname = g_strdup(gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(lookup_widget(gtk_widget_get_toplevel(GTK_WIDGET(button)),"fileselection2"))));
-
- /* lets check if the file exists and we don't allow to overwrite it
- * is there any way to do this in a more elegant manner? */
- //if((file_p = fopen(fname, "r")) != NULL) { /* could be also some other failure??? */
- // error("Error: wrong file name, file already exists!");
- // return;
- //}
-
- if((file_p = fopen(fname, "w")) == NULL) {
- error("Error: can not open file for saving");
- return;
- }
- if (page == 0) { /* so we have the build notebook open, it means we save the packet */
- /* YYY ok, this is not yet implemented */
- /* you could also add possibility to save even with this button on??? */
- //bt1 = lookup_widget(GTK_WIDGET(btx), "auto_get_mac_cbt");
- //if (GTK_TOGGLE_BUTTON(bt1)->active) {
- //printf("Error: you can't save in a packet if auto get link layer is on!\n");
- // error("Error: you can't save in a packet if auto get link layer is on!");
- // return;
- //}
- if (save_packet(btx, user_data, file_p) == -1) {
- fclose(file_p);
- return;
- }
- }
- else if (page == 1) { /* it is the send_built page */
- if (save_gen_b(btx, file_p) == -1) {
- fclose(file_p);
- return;
- }
- }
- else if (page == 2) {
- if (save_gen_s(btx, file_p) == -1) {
- fclose(file_p);
- return;
- }
- }
- else if (page == 3) {
- if (save_gen_pcap(btx, file_p) == -1) {
- fclose(file_p);
- return;
- }
- }
- else
- return;
- fclose(file_p);
- snprintf(buff4, 100, " Parameters saved in file %s", fname);
- statusbar_text(btx, buff4);
- gtk_grab_remove(gtk_widget_get_toplevel(GTK_WIDGET(button)));
- gtk_widget_destroy(gtk_widget_get_toplevel(GTK_WIDGET(button)));
- }
- void
- on_cancel_button2_clicked (GtkButton *button,
- gpointer user_data)
- {
- gtk_grab_remove(gtk_widget_get_toplevel(GTK_WIDGET(button)));
- gtk_widget_destroy(gtk_widget_get_toplevel(GTK_WIDGET(button)));
- }
- void
- on_fileselection2_destroy (GtkObject *object,
- gpointer user_data)
- {
- save_file_menu = NULL;
- }
- /*
- void
- on_clist1_select_row ( GtkWidget *clist, gint row, gint column, GdkEventButton *event, gpointer data)
- {
- GtkWidget *en_ip, *en_mac, *en_name;
- gchar *text_ip, *text_mac, *text_name;
- //gchar *textip, *textmac;
- //textip = (gchar *)malloc(16*sizeof(gchar));
- //textmac = (gchar *)malloc(18*sizeof(gchar));
-
- row_number = row;
- en_ip = lookup_widget(GTK_WIDGET(clist), "sel1_IP_entry");
- en_mac = lookup_widget(GTK_WIDGET(clist), "sel1_mac_entry");
- en_name = lookup_widget(GTK_WIDGET(clist), "entry153");
- gtk_clist_get_text(GTK_CLIST(clist), row, 0, &text_ip);
- gtk_clist_get_text(GTK_CLIST(clist), row, 1, &text_mac);
- gtk_clist_get_text(GTK_CLIST(clist), row, 2, &text_name);
- //strncpy(textip, text_ip, strlen(text_ip+1));
- //strncpy(textmac, text_mac, strlen(text_mac+1));
-
- gtk_entry_set_text(GTK_ENTRY(en_ip), text_ip);
- gtk_entry_set_text(GTK_ENTRY(en_mac), text_mac);
- gtk_entry_set_text(GTK_ENTRY(en_name), text_name);
-
- //free(textip);
- //free(textmac);
- //return;
- }
- */
- void
- on_sel1_add_bt_clicked (GtkButton *button,
- gpointer user_data)
- {
- GtkWidget *clist, *en_ip, *en_mac, *en_name, *en_ipv6;
- gchar *en_ip_t, *en_mac_t, *en_name_t, *en_ipv6_t;
- gchar *text_ip, *text_mac, *text_name, *text_ipv6;
- gchar *tmp[4];
- //gint number;
- GtkTreeModel *treestore;
- GtkTreeIter toplevel;
-
- clist = lookup_widget(GTK_WIDGET (selection1_dialog), "clist1");
- treestore = gtk_tree_view_get_model(GTK_TREE_VIEW(clist));
- en_ip = lookup_widget(GTK_WIDGET(clist), "sel1_IP_entry");
- en_ipv6 = lookup_widget(GTK_WIDGET(clist), "entry205");
- en_mac = lookup_widget(GTK_WIDGET(clist), "sel1_mac_entry");
- en_name = lookup_widget(GTK_WIDGET(clist), "entry153");
-
- /* is there any other elegant way to get the row number but with global variable? */
- en_ip_t = (char *)gtk_entry_get_text(GTK_ENTRY(en_ip));
- en_ipv6_t = (char *)gtk_entry_get_text(GTK_ENTRY(en_ipv6));
- en_mac_t = (char *)gtk_entry_get_text(GTK_ENTRY(en_mac));
- en_name_t = (char *)gtk_entry_get_text(GTK_ENTRY(en_name));
- /* we still have the value of the row number, so we can check wheather this is
- * the same as in the entry fields. so in case the user selects an entry and then
- * presses add button we won't get duplicated entries */
- GtkTreeSelection *selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(clist));
- GtkTreeIter iter;
- gtk_tree_selection_get_selected(selection,&treestore,&iter);
- gtk_tree_model_get(treestore,&iter,0,&text_ip,1,&text_ipv6,2,&text_mac,3,&text_name,-1);
- if ( (strlen(en_ip_t) == 0) && (strlen(en_ipv6_t) == 0) && (strlen(en_mac_t) == 0) )
- return;
- if ( (strcmp(en_ip_t, text_ip) == 0) && (strcmp(en_mac_t, text_mac) == 0) &&
- (strcmp(en_ipv6_t, text_ipv6) == 0) && (strcmp(en_name_t, text_name) == 0)) {
- //printf("values are the same, we don't insert them!\n");
- error("Error: values are the same, we don't insert them!");
- return;
- }
- /* now we have to check if the values are ok */
- if ( (strlen(en_ip_t) != 0) && (check_ip_address(en_ip_t) == -1) ) {
- //printf("wrong ip entry in address list\n");
- error("Error: wrong ip entry in address list");
- return;
- }
-
- if ( (strlen(en_ipv6_t) != 0) && (check_ipv6_address(en_ipv6_t, 0) == -1) ) {
- //printf("wrong ip entry in address list\n");
- error("Error: wrong ipv6 entry in address list");
- return;
- }
- if ( (strlen(en_mac_t) != 0) && (check_mac_address(en_mac_t) == -1) ) {
- //printf("wrong mac entry in address list\n");
- error("Error: wrong mac entry in address list");
- return;
- }
-
- tmp[0]= (gchar *)malloc(16*sizeof(gchar));
- tmp[1]= (gchar *)malloc(40*sizeof(gchar));
- tmp[2]= (gchar *)malloc(18*sizeof(gchar));
- tmp[3]= (gchar *)malloc(50*sizeof(gchar));
-
- strcpy(tmp[0], en_ip_t);
- strcpy(tmp[1], en_ipv6_t);
- strcpy(tmp[2], en_mac_t);
- strcpy(tmp[3], en_name_t);
-
- gtk_tree_store_append(GTK_TREE_STORE(treestore),&toplevel,NULL);
- gtk_tree_store_set(GTK_TREE_STORE(treestore),&toplevel,0,tmp[0],1,tmp[1],2,tmp[2],3,tmp[3],-1);
-
- free(tmp[0]);
- free(tmp[1]);
- free(tmp[2]);
- free(tmp[3]);
-
- }
- void
- on_sel1_delete_bt_clicked (GtkButton *button,
- gpointer user_data)
- {
- GtkWidget *clist;
-
- GtkTreeModel *treestore;
- //GtkTreeIter toplevel;
- clist = lookup_widget(GTK_WIDGET (selection1_dialog), "clist1");
- treestore = gtk_tree_view_get_model(GTK_TREE_VIEW(clist));
-
- GtkTreeSelection *selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(clist));
- GtkTreeIter iter;
- gtk_tree_selection_get_selected(selection,&treestore,&iter);
- gtk_tree_store_remove(GTK_TREE_STORE(treestore),&iter);
- gtk_tree_model_get_iter_first(treestore,&iter);
- gtk_tree_selection_select_iter(gtk_tree_view_get_selection(GTK_TREE_VIEW(lookup_widget(GTK_WIDGET (selection1_dialog), "clist1"))),&iter);
-
- }
- void
- on_sel1_ok_bt_clicked (GtkButton *button,
- gpointer user_data)
- {
- GtkWidget *clist; // *en_ip, *en_mac;
- gchar *en_ip_t, *en_ipv6_t, *en_mac_t;
- gchar *text_ip, *text_ipv6, *text_mac, *text_name;
- gchar temp[100];
- FILE *fp;
- int i;
-
- /* so we want to insert the choosen values into the entry mac field.
- * we have to check again, that the values are correct
- * if they are not a warning should pop up and the window should stay open
- * if they are ok, then the value is inserted and we try to write in the file */
- GtkTreeModel *treestore;
- //GtkTreeIter toplevel;
- clist = lookup_widget(GTK_WIDGET (selection1_dialog), "clist1");
- treestore = gtk_tree_view_get_model(GTK_TREE_VIEW(clist));
-
- GtkTreeSelection *selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(clist));
- GtkTreeIter iter;
- gtk_tree_selection_get_selected(selection,&treestore,&iter);
- gtk_tree_model_get(treestore,&iter,0,&en_ip_t,1,&en_ipv6_t,2,&en_mac_t,-1);
-
- /* we need to access the L_dst_mac or L_src_mac entry in the main window!
- * that is why we putted it static global before */
- if (MAC_yes == TRUE) {
- if (check_mac_address(en_mac_t) == -1) {
- //printf("wrong mac entry in address list\n");
- error("Error: wrong mac entry in address list");
- return;
- }
- else
- gtk_entry_set_text(GTK_ENTRY(entry_field), en_mac_t);
- }
- /* in case we need to insert the IP value as well
- * this is in case of an arp packet or ip packet, so we check the IP_yes value */
- if (IP_yes == TRUE) {
- if (check_ip_address(en_ip_t) == -1) { // ---
- //printf("wrong ip entry in address list\n");
- error("Error: wrong ip entry in address list");
- return;
- }
- else
- gtk_entry_set_text(GTK_ENTRY(entry_field_ip), en_ip_t);
- }
- /* in case we need to insert the IP value as well
- * this is in case of an arp packet or ip packet, so we check the IP_yes value */
- else if (IPv6_yes == TRUE) {
- if (check_ipv6_address(en_ipv6_t, 0) == -1) { // ---
- //printf("wrong ip entry in address list\n");
- error("Error: wrong ipv6 entry in address list");
- return;
- }
- else
- gtk_entry_set_text(GTK_ENTRY(entry_field_ipv6), en_ipv6_t);
- }
- /* we need to reopen the file with datebase and overwrite it with
- * the values in the clist field */
- if((fp = fopen(address_filename, "w")) == NULL) { /* could be also some other failure??? */
- //printf("file %s with database can't be opened!\n", address_filename);
- snprintf(temp, 100, "file %s with database can't be opened", address_filename);
- error(temp);
- /* YYY we could call a function where we could select the database file */
- return;
- }
- //GtkTreeIter iter2;
- gtk_tree_model_get_iter_first(treestore,&iter);
- for(i=0; ; i++) {
- gtk_tree_model_get(treestore,&iter,0,&text_ip,1,&text_ipv6,2,&text_mac,3,&text_name,-1);
- fputs(text_ip, fp);
- fputc(44, fp);
- fputs(text_ipv6, fp);
- fputc(44, fp);
- fputs(text_mac, fp);
- fputc(44, fp);
- fputs(text_name, fp);
- fputc(10, fp);
- if (gtk_tree_model_iter_next(treestore,&iter) == FALSE)
- break;
- }
-
- fclose(fp);
-
- gtk_grab_remove(GTK_WIDGET(selection1_dialog));
- gtk_widget_destroy(GTK_WIDGET(selection1_dialog));
-
- }
- void
- on_sel1_cancel_bt_clicked (GtkButton *button,
- gpointer user_data)
- {
- gtk_grab_remove(gtk_widget_get_toplevel(GTK_WIDGET(button)));
- gtk_widget_destroy(gtk_widget_get_toplevel(GTK_WIDGET(button)));
- }
- void
- on_sel1_dialog_destroy (GtkObject *object,
- gpointer user_data)
- {
- selection1_dialog = NULL;
- }
- void
- on_L_dst_select_bt_clicked (GtkButton *button,
- gpointer user_data)
- {
- entry_field = lookup_widget(GTK_WIDGET(button), "L_dst_mac");
- IP_yes = FALSE;
- MAC_yes = TRUE;
- selection_dialog_show(button, user_data);
- }
- void
- on_L_src_select_bt_clicked (GtkButton *button,
- gpointer user_data)
- {
- entry_field = lookup_widget(GTK_WIDGET(button), "L_src_mac");
- IP_yes = FALSE;
- MAC_yes = TRUE;
- selection_dialog_show(button, user_data);
- }
-
- /* this one shows the addresslist dialog. it tries to open a file with addresses. It should return an error in case of file error or if the contents of the file does not hold the specified structure */
- void
- selection_dialog_show (GtkButton *button,
- gpointer user_data)
- {
-
- FILE *fp;
- gchar *row[4], tmp[130] /*, temp[100]*/;
- int i=0, ch, first = 0, second = 0, third=0;
- GtkTreeStore *treestore;
- GtkTreeIter toplevel;
- treestore = gtk_tree_store_new(4,G_TYPE_STRING,G_TYPE_STRING,G_TYPE_STRING,G_TYPE_STRING);
- /* if there is a dialog already open, reopen it */
- if (selection1_dialog != NULL){
- gdk_window_show(selection1_dialog->window);
- gdk_window_raise(selection1_dialog->window);
- return;
- }
- /* if we can't open file then we raise an error dialog. user has to change the
- * address_filename variable using the File-> Select database option */
- if((fp = fopen(address_filename, "r")) == NULL) {
- //printf("file %s with database can't be opened!\n", address_filename);
- //snprintf(temp,100,"File %s with database can't be opened!\nClick on File->Select database",
- // address_filename);
- //error(temp);
- error("Error: Can't open selected address database!\n\n"
- "Click on File -> Select database\n"
- "to choose another one or create a new one\n\n"
- "File format: <IP address>,<MAC address>,<Name>");
- return;
- }
-
- /* create this dialog */
- selection1_dialog = create_sel1_dialog();
- /* resrve place for ip address, mac address and name, and ipv6 address */
- row[0]= (gchar *)malloc(16*sizeof(gchar));
- row[1]= (gchar *)malloc(40*sizeof(gchar));
- row[2]= (gchar *)malloc(18*sizeof(gchar));
- row[3]= (gchar *)malloc(50*sizeof(gchar));
- /* now we have to append the saved values: */
- /* we make following presumption: all entries must be in following format:
- * xxx.xxx.xxx.xxx,xx:xx:xx:xx:xx:xx,name
- * that means first there is IP in dot format and then mac address with : and name in the end
- * there can be an entry only with either ip or mac address and without name.
- * new lines and comments starting with # are allowed */
-
- for(;;) {
- /* we read the whole line and remember where the comma is
- * first is the place of the comma between ip and mac address
- * second ipv6, third is the variable holding the position between mac address and name
- * the line can have max 122 characters: 15 for ip , 40 for ipv6, 18 for mac and 50 for name
- * commas are obligatory */
- for (i=1, first = 0, second = 0, third=0; (ch=getc(fp)) != '\n' && i<122 && ch != EOF ;i++ ) {
- if (ch == ',') {
- if (first == 0)
- first = i;
- else if (second == 0)
- second = i;
- else if (third == 0)
- third = i;
- }
- tmp[i-1] = ch;
- }
- tmp[i-1] = '\0';
-
- /* if first and second and third are == 0 and ch== '\n' - new line, ok, skip this */
- if ( (first==0) && (second==0) && (third==0) && (ch == '\n') && (i==1) )
- continue;
-
- /* we also allow comments lines starting with # */
- if ( (i>1) && (tmp[0] == '#') )
- continue;
-
- /* first > 16 - ip address can not be longer then 15 char including points
- * second - first (mac address) exactly 18 char including : or 1 if without it
- * second - i > 50 - name can only have max 50 chars
- * if first and second are == 0 and i>0 there was no commas -> error
- * */
- if ( ( (first>16) || ((second-first)>40) || ((third-second)>18) || ((i-third)>50) ) ||
- ( (first==0) && (second==0) && (i>1)) ) {
- error("Error: Selected address database has wrong format!\n\n"
- "Click on File -> Select database\n"
- "to choose another one or create a new one\n\n"
- "File format: <IP address>,<MAC address>,<Name>");
- free(row[0]);
- free(row[1]);
- free(row[2]);
- free(row[3]);
- fclose(fp);
- selection1_dialog = NULL;
- return;
- }
-
- if (ch == EOF)
- break;
-
- tmp[first-1] = '\0';
- tmp[second-1] = '\0';
- tmp[third-1] = '\0';
-
- strncpy(row[0], tmp, first );
- strncpy(row[1], &tmp[first], (second-first));
- strncpy(row[2], &tmp[second], (third-second));
- strncpy(row[3], &tmp[third], (i-third));
- if ( (check_ip_address(row[0]) == -1) && (strlen(row[0]) !=0) ) {
- //printf("wrong ip entry in address list\n");
- error("Error: Wrong IP entry in address list!\n\n"
- "Click on File -> Select database\n"
- "to choose another one or create a new one\n\n"
- "File format: <IP address>,<MAC address>,<Name>");
- free(row[0]);
- free(row[1]);
- free(row[2]);
- free(row[3]);
- fclose(fp);
- selection1_dialog = NULL;
- return;
- }
-
- if ( (check_ipv6_address(row[1], 0) == -1) && (strlen(row[1]) !=0) ) {
- //printf("wrong ip entry in address list\n");
- error("Error: Wrong IPv6 entry in address list!\n\n"
- "Click on File -> Select database\n"
- "to choose another one or create a new one\n\n"
- "File format: <IP address>,<MAC address>,<Name>");
- free(row[0]);
- free(row[1]);
- free(row[2]);
- free(row[3]);
- fclose(fp);
- selection1_dialog = NULL;
- return;
- }
-
- if ( (check_mac_address(row[2]) == -1) && (strlen(row[2]) !=0) ) {
- //printf("wrong mac entry in address list\n");
- error("Error: Wrong MAC entry in address list\n\n"
- "Click on File -> Select database\n"
- "to choose another one or create a new one\n\n"
- "File format: <IP address>,<MAC address>,<Name>");
- free(row[0]);
- free(row[1]);
- free(row[2]);
- free(row[3]);
- fclose(fp);
- selection1_dialog = NULL;
- return;
- }
- gtk_tree_store_append(treestore,&toplevel,NULL);
- gtk_tree_store_set(treestore,&toplevel,0,row[0],1,row[1],2,row[2],3,row[3],-1);
- }
-
- free(row[0]);
- free(row[1]);
- free(row[2]);
- free(row[3]);
- gtk_widget_show(selection1_dialog);
- // GtkTreeView ...
- GtkTreeViewColumn *stolpec;
- GtkCellRenderer *renderer;
- stolpec = gtk_tree_view_column_new();
- gtk_tree_view_column_set_title(stolpec,"IPv4 address");
- gtk_tree_view_append_column(GTK_TREE_VIEW(lookup_widget(GTK_WIDGET (selection1_dialog), "clist1")),stolpec);
- renderer = gtk_cell_renderer_text_new();
- gtk_tree_view_column_pack_start(stolpec,renderer,TRUE);
- gtk_tree_view_column_add_attribute(stolpec,renderer,"text",0);
- stolpec = gtk_tree_view_column_new();
- gtk_tree_view_column_set_title(stolpec,"IPv6 address");
- gtk_tree_view_append_column(GTK_TREE_VIEW(lookup_widget(GTK_WIDGET (selection1_dialog), "clist1")),stolpec);
- renderer = gtk_cell_renderer_text_new();
- gtk_tree_view_column_pack_start(stolpec,renderer,TRUE);
- gtk_tree_view_column_add_attribute(stolpec,renderer,"text",1);
- stolpec = gtk_tree_view_column_new();
- gtk_tree_view_column_set_title(stolpec,"MAC value");
- gtk_tree_view_append_column(GTK_TREE_VIEW(lookup_widget(GTK_WIDGET (selection1_dialog), "clist1")),stolpec);
- renderer = gtk_cell_renderer_text_new();
- gtk_tree_view_column_pack_start(stolpec,renderer,TRUE);
- gtk_tree_view_column_add_attribute(stolpec,renderer,"text",2);
- stolpec = gtk_tree_view_column_new();
- gtk_tree_view_column_set_title(stolpec,"Name");
- gtk_tree_view_append_column(GTK_TREE_VIEW(lookup_widget(GTK_WIDGET (selection1_dialog), "clist1")),stolpec);
- renderer = gtk_cell_renderer_text_new();
- gtk_tree_view_column_pack_start(stolpec,renderer,TRUE);
- gtk_tree_view_column_add_attribute(stolpec,renderer,"text",3);
- GtkTreeModel *model = GTK_TREE_MODEL(treestore);
- gtk_tree_view_set_model(GTK_TREE_VIEW(lookup_widget(GTK_WIDGET (selection1_dialog), "clist1")),model);
- GtkTreeIter iter;
- gtk_tree_model_get_iter_first(model,&iter);
- g_object_unref(model);
- gtk_tree_selection_set_mode(gtk_tree_view_get_selection(GTK_TREE_VIEW(lookup_widget(GTK_WIDGET (selection1_dialog), "clist1"))),GTK_SELECTION_SINGLE);
- gtk_tree_selection_select_iter(gtk_tree_view_get_selection(GTK_TREE_VIEW(lookup_widget(GTK_WIDGET (selection1_dialog), "clist1"))),&iter);
- // ...
-
- fclose(fp);
- }
- void
- on_auto_get_mac_cbt_toggled (GtkToggleButton *togglebutton,
- gpointer user_data)
- {
- GtkWidget *hb5, *option_menu, *opt_value, *menu, *active_item;
- gint active_index;
- hb5 = lookup_widget(GTK_WIDGET(togglebutton), "hbox4");
- option_menu = lookup_widget(GTK_WIDGET(togglebutton), "L_optmenu1_bt");
- opt_value = lookup_widget(GTK_WIDGET(togglebutton), "L_ethtype");
- if (GTK_TOGGLE_BUTTON(togglebutton)->active) {
- gtk_widget_set_sensitive(hb5, FALSE);
- }
- else {
- gtk_widget_set_sensitive(hb5, TRUE);
- menu = GTK_OPTION_MENU (option_menu)->menu;
- active_item = gtk_menu_get_active (GTK_MENU (menu));
- active_index = g_list_index (GTK_MENU_SHELL (menu)->children, active_item);
- if (active_index == 0) {
- gtk_entry_set_text(GTK_ENTRY(opt_value), "0800");
- gtk_editable_set_editable(GTK_EDITABLE(opt_value), FALSE);
- }
- else if (active_index == 1) {
- gtk_entry_set_text(GTK_ENTRY(opt_value), "86DD");
- gtk_editable_set_editable(GTK_EDITABLE(opt_value), FALSE);
- }
- else if (active_index == 2) {
- gtk_entry_set_text(GTK_ENTRY(opt_value), "0806");
- gtk_editable_set_editable(GTK_EDITABLE(opt_value), FALSE);
- }
- else if (active_index == 3) {
- gtk_entry_set_text(GTK_ENTRY(opt_value), "");
- gtk_editable_set_editable(GTK_EDITABLE(opt_value), TRUE);
- }
- }
- }
- void
- on_tcp_bt_toggled (GtkToggleButton *togglebutton,
- gpointer user_data)
- {
- GtkWidget *nt4, *en1, *opt1;
-
- nt4 = lookup_widget(GTK_WIDGET(togglebutton), "notebook4");
- en1 = lookup_widget(GTK_WIDGET(togglebutton), "entry34");
- opt1 = lookup_widget(GTK_WIDGET(togglebutton), "optionmenu3");
-
- gtk_option_menu_set_history (GTK_OPTION_MENU (opt1), 3);
- gtk_notebook_set_page(GTK_NOTEBOOK(nt4), 1);
- gtk_entry_set_text(GTK_ENTRY(en1), "6");
- gtk_editable_set_editable(GTK_EDITABLE(en1), FALSE);
- }
- void
- on_udp_bt_toggled (GtkToggleButton *togglebutton,
- gpointer user_data)
- {
- GtkWidget *nt4, *en1, *opt1;
- nt4 = lookup_widget(GTK_WIDGET(togglebutton), "notebook4");
- en1 = lookup_widget(GTK_WIDGET(togglebutton), "entry34");
- opt1 = lookup_widget(GTK_WIDGET(togglebutton), "optionmenu3");
-
- gtk_notebook_set_page(GTK_NOTEBOOK(nt4), 0);
- gtk_option_menu_set_history (GTK_OPTION_MENU (opt1), 4);
- gtk_entry_set_text(GTK_ENTRY(en1), "17");
- gtk_editable_set_editable(GTK_EDITABLE(en1), FALSE);
- }
- void
- on_icmp_bt_toggled (GtkToggleButton *togglebutton,
- gpointer user_data)
- {
- GtkWidget *nt4, *en1, *opt1;
-
- nt4 = lookup_widget(GTK_WIDGET(togglebutton), "notebook4");
- en1 = lookup_widget(GTK_WIDGET(togglebutton), "entry34");
- opt1 = lookup_widget(GTK_WIDGET(togglebutton), "optionmenu3");
-
- gtk_option_menu_set_history (GTK_OPTION_MENU (opt1), 1);
- gtk_notebook_set_page(GTK_NOTEBOOK(nt4), 2);
- gtk_entry_set_text(GTK_ENTRY(en1), "1");
- gtk_editable_set_editable(GTK_EDITABLE(en1), FALSE);
- }
- void
- on_igmp_bt_toggled (GtkToggleButton *togglebutton,
- gpointer user_data)
- {
- GtkWidget *nt4, *en1, *opt1;
-
- nt4 = lookup_widget(GTK_WIDGET(togglebutton), "notebook4");
- en1 = lookup_widget(GTK_WIDGET(togglebutton), "entry34");
- opt1 = lookup_widget(GTK_WIDGET(togglebutton), "optionmenu3");
-
- gtk_option_menu_set_history (GTK_OPTION_MENU (opt1), 2);
- gtk_notebook_set_page(GTK_NOTEBOOK(nt4), 4);
- gtk_entry_set_text(GTK_ENTRY(en1), "2");
- gtk_editable_set_editable(GTK_EDITABLE(en1), FALSE);
- }
- void
- on_ip_user_data_bt_toggled (GtkToggleButton *togglebutton,
- gpointer user_data)
- {
- GtkWidget *nt4, *en1, *opt1;
-
- nt4 = lookup_widget(GTK_WIDGET(togglebutton), "notebook4");
- en1 = lookup_widget(GTK_WIDGET(togglebutton), "entry34");
- opt1 = lookup_widget(GTK_WIDGET(togglebutton), "optionmenu3");
-
- gtk_option_menu_set_history (GTK_OPTION_MENU (opt1), 5);
- gtk_notebook_set_page(GTK_NOTEBOOK(nt4), 3);
- gtk_entry_set_text(GTK_ENTRY(en1), "");
- gtk_editable_set_editable(GTK_EDITABLE(en1), TRUE);
- }
- void
- on_L_optmenu1_bt_clicked (GtkButton *button,
- gpointer user_data)
- {
- GtkWidget *option_menu, *menu, *active_item, *opt_value;
- gint active_index;
- option_menu = lookup_widget (GTK_WIDGET (button), "L_optmenu1_bt");
- opt_value = lookup_widget (GTK_WIDGET (button), "L_ethtype");
- menu = GTK_OPTION_MENU (option_menu)->menu;
- active_item = gtk_menu_get_active (GTK_MENU (menu));
- active_index = g_list_index (GTK_MENU_SHELL (menu)->children, active_item);
- if (active_index == 0) {
- gtk_entry_set_text(GTK_ENTRY(opt_value), "0800");
- gtk_editable_set_editable(GTK_EDITABLE(opt_value), FALSE);
- }
- else if (active_index == 1) {
- gtk_entry_set_text(GTK_ENTRY(opt_value), "86DD");
- gtk_editable_set_editable(GTK_EDITABLE(opt_value), FALSE);
- }
- else if (active_index == 2) {
- gtk_entry_set_text(GTK_ENTRY(opt_value), "0806");
- gtk_editable_set_editable(GTK_EDITABLE(opt_value), FALSE);
- }
- else if (active_index == 3) {
- gtk_entry_set_text(GTK_ENTRY(opt_value), "");
- gtk_editable_set_editable(GTK_EDITABLE(opt_value), TRUE);
- }
- }
- void
- on_optionmenu6_clicked (GtkButton *button,
- gpointer user_data)
- {
- GtkWidget *option_menu, *menu, *active_item, *opt_value;
- gint active_index;
- option_menu = lookup_widget (GTK_WIDGET (button), "optionmenu6");
- opt_value = lookup_widget (GTK_WIDGET (button), "L_pid");
- menu = GTK_OPTION_MENU (option_menu)->menu;
- active_item = gtk_menu_get_active (GTK_MENU (menu));
- active_index = g_list_index (GTK_MENU_SHELL (menu)->children, active_item);
- if (active_index == 0) {
- gtk_entry_set_text(GTK_ENTRY(opt_value), "0800");
- gtk_editable_set_editable(GTK_EDITABLE(opt_value), FALSE);
- }
- else if (active_index == 1) {
- gtk_entry_set_text(GTK_ENTRY(opt_value), "86DD");
- gtk_editable_set_editable(GTK_EDITABLE(opt_value), FALSE);
- }
- else if (active_index == 2) {
- gtk_entry_set_text(GTK_ENTRY(opt_value), "0806");
- gtk_editable_set_editable(GTK_EDITABLE(opt_value), FALSE);
- }
- else if (active_index == 3) {
- gtk_entry_set_text(GTK_ENTRY(opt_value), "");
- gtk_editable_set_editable(GTK_EDITABLE(opt_value), TRUE);
- }
- }
- void
- on_optionmenu7_clicked (GtkButton *button,
- gpointer user_data)
- {
- GtkWidget *option_menu, *menu, *active_item, *opt_value;
- gint active_index;
- option_menu = lookup_widget (GTK_WIDGET (button), "optionmenu7");
- opt_value = lookup_widget (GTK_WIDGET (button), "entry102");
- menu = GTK_OPTION_MENU (option_menu)->menu;
- active_item = gtk_menu_get_active (GTK_MENU (menu));
- active_index = g_list_index (GTK_MENU_SHELL (menu)->children, active_item);
- if (active_index == 0) {
- gtk_entry_set_text(GTK_ENTRY(opt_value), "8");
- gtk_editable_set_editable(GTK_EDITABLE(opt_value), FALSE);
- }
- else if (active_index == 1) {
- gtk_entry_set_text(GTK_ENTRY(opt_value), "0");
- gtk_editable_set_editable(GTK_EDITABLE(opt_value), FALSE);
- }
- else if (active_index == 2) {
- gtk_entry_set_text(GTK_ENTRY(opt_value), "4");
- gtk_editable_set_editable(GTK_EDITABLE(opt_value), FALSE);
- }
- else if (active_index == 3) {
- gtk_entry_set_text(GTK_ENTRY(opt_value), "18");
- gtk_editable_set_editable(GTK_EDITABLE(opt_value), FALSE);
- }
- else if (active_index == 4) {
- gtk_entry_set_text(GTK_ENTRY(opt_value), "");
- gtk_editable_set_editable(GTK_EDITABLE(opt_value), TRUE);
- }
- }
- void
- on_IPv6_rdbt_toggled (GtkToggleButton *togglebutton,
- gpointer user_data)
- {
- GtkWidget *nt2;
- GtkWidget *nt4;
- GtkWidget *option_menu, *opt_value;
- GtkWidget *rb1, *rb2, *rb3, *rb4;
-
- //cbt = lookup_widget(GTK_WIDGET(togglebutton), "auto_get_mac_cbt");
- //gtk_widget_set_sensitive (cbt, TRUE);
- option_menu = lookup_widget(GTK_WIDGET(togglebutton), "L_optmenu1_bt");
- opt_value = lookup_widget(GTK_WIDGET(togglebutton), "L_ethtype");
- nt2 = lookup_widget(GTK_WIDGET(togglebutton), "notebook2");
- gtk_notebook_set_page(GTK_NOTEBOOK(nt2), 1);
- gtk_option_menu_set_history (GTK_OPTION_MENU (option_menu), 1);
- gtk_entry_set_text(GTK_ENTRY(opt_value), "86DD");
- gtk_editable_set_editable(GTK_EDITABLE(opt_value), FALSE);
- /* what is next page */
- rb1 = lookup_widget(GTK_WIDGET(togglebutton), "radiobutton67");
- rb2 = lookup_widget(GTK_WIDGET(togglebutton), "radiobutton68");
- rb3 = lookup_widget(GTK_WIDGET(togglebutton), "radiobutton69");
- rb4 = lookup_widget(GTK_WIDGET(togglebutton), "radiobutton71");
- nt4 = lookup_widget(GTK_WIDGET(togglebutton), "notebook4");
- //gtk_editable_set_editable(GTK_EDITABLE(opt_value), FALSE);
- //gtk_editable_set_editable(GTK_EDITABLE(opt_value2), FALSE);
- if (GTK_TOGGLE_BUTTON(rb1)->active)
- gtk_notebook_set_page(GTK_NOTEBOOK(nt4), 0);
- else if (GTK_TOGGLE_BUTTON(rb2)->active)
- gtk_notebook_set_page(GTK_NOTEBOOK(nt4), 1);
- else if (GTK_TOGGLE_BUTTON(rb3)->active)
- gtk_notebook_set_page(GTK_NOTEBOOK(nt4), 5);
- else
- gtk_notebook_set_page(GTK_NOTEBOOK(nt4), 3);
- }
- void
- on_Build_button_clicked (GtkButton *button,
- gpointer user_data)
- {
- GtkWidget *nt1;
-
- nt1 = lookup_widget(GTK_WIDGET(button), "notebook1");
- gtk_notebook_set_page(GTK_NOTEBOOK(nt1), 0);
- nt1 = lookup_widget(GTK_WIDGET(button), "Load_button");
- gtk_widget_set_sensitive(nt1, TRUE);
- nt1 = lookup_widget(GTK_WIDGET(button), "Save_button");
- gtk_widget_set_sensitive(nt1, TRUE);
- nt1 = lookup_widget(GTK_WIDGET(button), "Reset_button");
- gtk_widget_set_sensitive(nt1, TRUE);
- nt1 = lookup_widget(GTK_WIDGET(button), "button62");
- gtk_widget_set_sensitive(nt1, TRUE);
- nt1 = lookup_widget(GTK_WIDGET(button), "Interface_button");
- gtk_widget_set_sensitive(nt1, TRUE);
- nt1 = lookup_widget(GTK_WIDGET(button), "Send_button");
- gtk_widget_set_sensitive(nt1, TRUE);
- nt1 = lookup_widget(GTK_WIDGET(button), "Stop_button");
- gtk_widget_set_sensitive(nt1, TRUE);
- statusbar_text(button, " Builder window opened");
- }
- void
- on_Gen_button_clicked (GtkButton *button,
- gpointer user_data)
- {
- GtkWidget *ntbk2, *ntbk4, *ntbk7;
- GtkWidget *nt1;
- GtkWidget *text_e;
- GtkWidget *crc_value;
- unsigned long crc32;
- char str_crc32[9];
- char tmp[4600];
- guint i, j, m, page1, page2;
-
- ntbk2 = lookup_widget (GTK_WIDGET (button), "notebook2");
- ntbk4 = lookup_widget (GTK_WIDGET (button), "notebook4");
- ntbk7 = lookup_widget (GTK_WIDGET (button), "notebook7");
- nt1 = lookup_widget(GTK_WIDGET(button), "notebook1");
- crc_value = lookup_widget(GTK_WIDGET (button), "entry164");
- gtk_notebook_set_page(GTK_NOTEBOOK(nt1), 1);
-
- nt1 = lookup_widget(GTK_WIDGET(button), "Load_button");
- gtk_widget_set_sensitive(nt1, FALSE);
- nt1 = lookup_widget(GTK_WIDGET(button), "Save_button");
- gtk_widget_set_sensitive(nt1, FALSE);
- nt1 = lookup_widget(GTK_WIDGET(button), "Reset_button");
- gtk_widget_set_sensitive(nt1, FALSE);
- nt1 = lookup_widget(GTK_WIDGET(button), "button62");
- gtk_widget_set_sensitive(nt1, FALSE);
- nt1 = lookup_widget(GTK_WIDGET(button), "Interface_button");
- gtk_widget_set_sensitive(nt1, TRUE);
- nt1 = lookup_widget(GTK_WIDGET(button), "Send_button");
- gtk_widget_set_sensitive(nt1, TRUE);
- nt1 = lookup_widget(GTK_WIDGET(button), "Stop_button");
- gtk_widget_set_sensitive(nt1, TRUE);
- statusbar_text(button, " Gen-b window opened.");
- /* get access to the buffer of text field */
- text_e = lookup_widget(GTK_WIDGET (button), "text5");
- GtkTextBuffer *buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(text_e));
- show_error_dialog = 0;
- if (make_packet(button, user_data) == -1) {
- //error("Packet contents is not ok!\n");
- snprintf(&tmp[0], 200, "\n\n\n\n Packet constructed in Builder is not ok!");
- gtk_entry_set_text(GTK_ENTRY(crc_value), "");
- }
- else {
- /* copy data to tmp field */
- for (i=0, j=0, m=1; j < number; m++, j++) {
- snprintf(&tmp[i], 4600, "%02x", packet[j]);
- i++; i++;
- /* we allow only 16 bytes in each row - looks nicer */
- if ((m % 16) == 0 && (m > 1)) {
- tmp[i]='\n';
- m = 0;
- }
- else
- tmp[i] = ' ';
- i++;
- }
- tmp[i] = '\0';
- crc32 = get_crc32(packet, number);
- snprintf(str_crc32, 9, "%08lX", crc32);
- gtk_entry_set_text(GTK_ENTRY(crc_value), str_crc32);
- }
-
- /* insert the text in the text field */
- gtk_text_buffer_set_text(buffer,tmp,-1);
- /* we want to set correct options in send built change while sending option menu */
- if (page1 == 3)
- gtk_notebook_set_page(GTK_NOTEBOOK(ntbk7), 2);
- else if (page1 == 1)
- gtk_notebook_set_page(GTK_NOTEBOOK(ntbk7), 0);
- else if (page1 == 2)
- gtk_notebook_set_page(GTK_NOTEBOOK(ntbk7), 0);
- else {
- page2 = gtk_notebook_get_current_page(GTK_NOTEBOOK(ntbk4));
- if (page2 == 0)
- gtk_notebook_set_page(GTK_NOTEBOOK(ntbk7), 4);
- else if (page2 == 1)
- gtk_notebook_set_page(GTK_NOTEBOOK(ntbk7), 3);
- else
- gtk_notebook_set_page(GTK_NOTEBOOK(ntbk7), 1);
-
- }
-
- show_error_dialog = 1;
- }
- void
- on_Gen_s_bt_clicked (GtkButton *button,
- gpointer user_data)
- {
- GtkWidget *nt1;
-
- nt1 = lookup_widget(GTK_WIDGET(button), "notebook1");
- gtk_notebook_set_page(GTK_NOTEBOOK(nt1), 2);
- nt1 = lookup_widget(GTK_WIDGET(button), "Load_button");
- gtk_widget_set_sensitive(nt1, FALSE);
- nt1 = lookup_widget(GTK_WIDGET(button), "Save_button");
- gtk_widget_set_sensitive(nt1, FALSE);
- nt1 = lookup_widget(GTK_WIDGET(button), "Reset_button");
- gtk_widget_set_sensitive(nt1, FALSE);
- nt1 = lookup_widget(GTK_WIDGET(button), "button62");
- gtk_widget_set_sensitive(nt1, FALSE);
- nt1 = lookup_widget(GTK_WIDGET(button), "Interface_button");
- gtk_widget_set_sensitive(nt1, TRUE);
- nt1 = lookup_widget(GTK_WIDGET(button), "Send_button");
- gtk_widget_set_sensitive(nt1, TRUE);
- nt1 = lookup_widget(GTK_WIDGET(button), "Stop_button");
- gtk_widget_set_sensitive(nt1, TRUE);
- statusbar_text(button, " Gen-s window opened");
- //on_button87_clicked(button, user_data);
- }
- void
- on_Gen_k_bt_clicked (GtkButton *b…
Large files files are truncated, but you can click here to view the full file