⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 callbacks.c

📁 wifi 无线网络路由协议OLSR linux下C代码
💻 C
字号:
/* * OLSR ad-hoc routing table management protocol GUI front-end * Copyright (C) 2003 Andreas T鴑nesen (andreto@ifi.uio.no) * * This file is part of olsr.org. * * uolsrGUI 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. * * uolsrGUI 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 olsr.org; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA * */#include "common.h"#include "interface.h"void selection_made( GtkWidget      *clist,                     gint            row,                     gint            column,		     GdkEventButton *event,                     gpointer        data ){    gchar *ip, *hops, *gw, *dev;    const gchar text[100];    /* Get the text that is stored in the selected row and column     * which was clicked in. We will receive it as a pointer in the     * argument text.     */    gtk_clist_get_text(GTK_CLIST(clist), row, 0, &ip);    gtk_clist_get_text(GTK_CLIST(clist), row, 1, &gw);    gtk_clist_get_text(GTK_CLIST(clist), row, 2, &hops);    gtk_clist_get_text(GTK_CLIST(clist), row, 3, &dev);    /* Just prints some information about the selected row */    sprintf((char *)&text[0], "IP:%s\nGATEWAY:%s\nHOPCOUNT:%s\nINTERFACE:%s\n",	    ip, gw, hops, dev);    //gtk_text_buffer_set_text (textBuffer, text, -1);    //gtk_text_view_set_buffer((GtkTextView *)text1, textBuffer);    //gtk_widget_show (text1);    return;}voidnode_selection(GtkWidget *clist, gint row, gint column, GdkEventButton *event, gpointer data){  gchar *text;  struct node *host;  struct mid *mids;  struct mpr *mprs;  struct hna *hnas;  int i;  gchar *tmpshit[1] = {""};  /*   *Clear the lists   */  gtk_clist_clear(GTK_CLIST(mid_list));  gtk_clist_clear(GTK_CLIST(mpr_list));  gtk_clist_clear(GTK_CLIST(hna_list));  i = 0;  /*   *Get th IP address   */  gtk_clist_get_text(GTK_CLIST(node_list), row, 0, &text);  /* Get the node */  if(strncmp(text, "local", sizeof("local")) == 0)    host = find_node_t(&main_addr);  else    host = find_node(text);  if(host)    {      /* Timeout the registered MPRs for this node */      time_out_mprs(&host->addr);      /* Get mpr pointer AFTER timeout....(another waisted hour...) */       mprs = host->mpr.next;      mids = host->mid.next;      hnas = host->hna.next;      while (mids != &host->mid)	{	  gtk_clist_append(GTK_CLIST(mid_list), tmpshit);	  gtk_clist_set_text(GTK_CLIST(mid_list), i, 0, ip_to_string(&mids->alias));	  i++;	  mids = mids->next;	}      i = 0;      while (mprs != &host->mpr)	{	  //printf("ADDING MPR : %s\n", ip_to_string(&mprs->addr));fflush(stdout);	  gtk_clist_append(GTK_CLIST(mpr_list), tmpshit);	  gtk_clist_set_text(GTK_CLIST(mpr_list), i, 0, ip_to_string(&mprs->addr));	  i++;	  mprs = mprs->next;	}      i = 0;      while (hnas != &host->hna)	{	  gtk_clist_append(GTK_CLIST(hna_list), tmpshit);	  gtk_clist_set_text(GTK_CLIST(hna_list), i, 0, ip_to_string(&hnas->net));	  i++;	  hnas = hnas->next;	}    }  else    {      printf("Could not find info about %s!\n", text);    }}voidpacket_selection(GtkWidget *clist, gint row, gint column, GdkEventButton *event, gpointer data){  /* Fetch the packet from the cache */  union olsr_message *pack;  char *packet;  int y, x;  short size;  char *content[4];  int mem_size = 10;  content[0] = (char *)malloc(mem_size);  content[1] = (char *)malloc(mem_size);  content[2] = (char *)malloc(mem_size);  content[3] = (char *)malloc(mem_size);  pack = get_packet(row);  packet = (char *)pack;  //printf("Got the packet at row %d...\n", row);  gtk_clist_clear(GTK_CLIST(packet_content_list));  size = ntohs(pack->v4.olsr_msgsize);    for(y = 0; y < size;y += 4)    {      for(x = 0; x < 4; x++)	{	  if(display_dec)	    sprintf(content[x], "%03i", (u_char) packet[y+x]); /* Decimal format */	  else	    sprintf(content[x], "%02x", (u_char) packet[y+x]); /* Hex format */	    	}      gtk_clist_append(GTK_CLIST(packet_content_list), content);    }  free(content[0]);  free(content[1]);  free(content[2]);  free(content[3]);}voidcolumn_clicked_callback(GtkWidget *list,gint column){  //printf("You pressed %d\n",column);}/* *Connect button callback */void connect_callback( GtkWidget *widget,		  gpointer   data ){  ipc_connect();}/* *Packet button callback */void packet_callback( GtkWidget *widget,		  gpointer   data ){  if(freeze_packets)    {      freeze_packets = 0;      gtk_button_set_label(GTK_BUTTON(packet_button), "Freeze packets");    }  else    {      freeze_packets = 1;      gtk_button_set_label(GTK_BUTTON(packet_button), "Grab packets");    }}/* *Packet display button callback */void packet_disp_callback( GtkWidget *widget,		  gpointer   data ){  if(display_dec)    {      display_dec = 0;      gtk_button_set_label(GTK_BUTTON(packet_disp_button), "Display decimal");    }  else    {      display_dec = 1;      gtk_button_set_label(GTK_BUTTON(packet_disp_button), "Display hex");    }}voidgui_shutdown(GtkObject *object, gpointer user_data){  printf("Shutting down...\n");  if(ipc_close() < 0)    printf("Could not close socket!\n");  printf("BYE-BYE!\n");  exit(0);}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -