diff options
Diffstat (limited to 'net.c')
-rw-r--r-- | net.c | 183 |
1 files changed, 34 insertions, 149 deletions
@@ -3,166 +3,53 @@ * Copyright (C) 2003 Leandro Pereira <leandro@linuxmag.com.br> * * May be modified and/or distributed under the terms of GNU GPL version 2. - * - * Tested only with 2.4.x kernels on ix86. - * USB support needs netdevfs. */ #include <stdio.h> +#include "config.h" #include "hardinfo.h" #include "net.h" +gboolean net_update(gpointer data); + GtkWidget *net_get_widget(MainWindow * mainwindow) { - GtkWidget *vbox1; - GtkWidget *scrolledwindow1; - GtkWidget *clist1; - GtkWidget *label2; - GtkWidget *table1; - GtkWidget *label4; - GtkWidget *label5; - GtkWidget *label7; - GtkWidget *label8; - GtkWidget *label3; - GtkWidget *label10; - GtkWidget *label11; - GtkWidget *label12; - GtkWidget *label14; - GtkWidget *label15; - GtkWidget *vseparator1; - - vbox1 = gtk_vbox_new(FALSE, 5); - gtk_widget_show(vbox1); - gtk_container_set_border_width(GTK_CONTAINER(vbox1), 4); - - scrolledwindow1 = gtk_scrolled_window_new(NULL, NULL); - gtk_widget_show(scrolledwindow1); - gtk_box_pack_start(GTK_BOX(vbox1), scrolledwindow1, TRUE, TRUE, 0); - gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scrolledwindow1), - GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC); - - clist1 = gtk_clist_new(2); - gtk_widget_show(clist1); - gtk_container_add(GTK_CONTAINER(scrolledwindow1), clist1); - gtk_clist_set_column_width(GTK_CLIST(clist1), 0, 30); - gtk_clist_set_column_width(GTK_CLIST(clist1), 1, 80); - gtk_clist_column_titles_show(GTK_CLIST(clist1)); - - label2 = gtk_label_new(_("Interface name")); - gtk_widget_show(label2); - gtk_clist_set_column_widget(GTK_CLIST(clist1), 1, label2); - gtk_label_set_justify(GTK_LABEL(label2), GTK_JUSTIFY_LEFT); - gtk_misc_set_alignment(GTK_MISC(label2), 0, 0.5); - - table1 = gtk_table_new(3, 5, FALSE); - gtk_widget_show(table1); - gtk_box_pack_start(GTK_BOX(vbox1), table1, FALSE, FALSE, 0); - gtk_container_set_border_width(GTK_CONTAINER(table1), 4); - gtk_table_set_row_spacings(GTK_TABLE(table1), 4); - gtk_table_set_col_spacings(GTK_TABLE(table1), 4); - - label4 = gtk_label_new(_("Bytes:")); - gtk_widget_show(label4); - gtk_table_attach(GTK_TABLE(table1), label4, 0, 1, 1, 2, - (GtkAttachOptions) (GTK_FILL), - (GtkAttachOptions) (0), 0, 0); - gtk_label_set_justify(GTK_LABEL(label4), GTK_JUSTIFY_LEFT); - gtk_misc_set_alignment(GTK_MISC(label4), 0, 0.5); - - label5 = gtk_label_new(_("Speed:")); - gtk_widget_show(label5); - gtk_table_attach(GTK_TABLE(table1), label5, 0, 1, 2, 3, - (GtkAttachOptions) (GTK_FILL), - (GtkAttachOptions) (0), 0, 0); - gtk_label_set_justify(GTK_LABEL(label5), GTK_JUSTIFY_LEFT); - gtk_misc_set_alignment(GTK_MISC(label5), 0, 0.5); - - label7 = gtk_label_new(_("Bytes:")); - gtk_widget_show(label7); - gtk_table_attach(GTK_TABLE(table1), label7, 3, 4, 1, 2, - (GtkAttachOptions) (GTK_FILL), - (GtkAttachOptions) (0), 0, 0); - gtk_label_set_justify(GTK_LABEL(label7), GTK_JUSTIFY_LEFT); - gtk_misc_set_alignment(GTK_MISC(label7), 0, 0.5); - - label8 = gtk_label_new(_("Speed")); - gtk_widget_show(label8); - gtk_table_attach(GTK_TABLE(table1), label8, 3, 4, 2, 3, - (GtkAttachOptions) (GTK_FILL), - (GtkAttachOptions) (0), 0, 0); - gtk_label_set_justify(GTK_LABEL(label8), GTK_JUSTIFY_LEFT); - gtk_misc_set_alignment(GTK_MISC(label8), 0, 0.5); - - label3 = gtk_label_new(_("<big><b>Receive</b></big>")); - gtk_widget_show(label3); - gtk_table_attach(GTK_TABLE(table1), label3, 0, 2, 0, 1, - (GtkAttachOptions) (GTK_FILL), - (GtkAttachOptions) (0), 0, 0); - gtk_label_set_use_markup(GTK_LABEL(label3), TRUE); - gtk_label_set_justify(GTK_LABEL(label3), GTK_JUSTIFY_LEFT); - gtk_misc_set_alignment(GTK_MISC(label3), 0, 0.5); - - label10 = gtk_label_new(_("<big><b>Transmit</b></big>")); - gtk_widget_show(label10); - gtk_table_attach(GTK_TABLE(table1), label10, 3, 5, 0, 1, - (GtkAttachOptions) (GTK_FILL), - (GtkAttachOptions) (0), 0, 0); - gtk_label_set_use_markup(GTK_LABEL(label10), TRUE); - gtk_label_set_justify(GTK_LABEL(label10), GTK_JUSTIFY_LEFT); - gtk_misc_set_alignment(GTK_MISC(label10), 0, 0.5); - - label11 = gtk_label_new(_("0B")); - gtk_widget_show(label11); - gtk_table_attach(GTK_TABLE(table1), label11, 1, 2, 1, 2, - (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), - (GtkAttachOptions) (0), 0, 0); - gtk_label_set_justify(GTK_LABEL(label11), GTK_JUSTIFY_LEFT); - gtk_misc_set_alignment(GTK_MISC(label11), 0, 0.5); - - label12 = gtk_label_new(_("0B/s")); - gtk_widget_show(label12); - gtk_table_attach(GTK_TABLE(table1), label12, 1, 2, 2, 3, - (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), - (GtkAttachOptions) (0), 0, 0); - gtk_label_set_justify(GTK_LABEL(label12), GTK_JUSTIFY_LEFT); - gtk_misc_set_alignment(GTK_MISC(label12), 0, 0.5); - - label14 = gtk_label_new(_("0B")); - gtk_widget_show(label14); - gtk_table_attach(GTK_TABLE(table1), label14, 4, 5, 1, 2, - (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), - (GtkAttachOptions) (0), 0, 0); - gtk_label_set_justify(GTK_LABEL(label14), GTK_JUSTIFY_LEFT); - gtk_misc_set_alignment(GTK_MISC(label14), 0, 0.5); - - label15 = gtk_label_new(_("0B/s")); - gtk_widget_show(label15); - gtk_table_attach(GTK_TABLE(table1), label15, 4, 5, 2, 3, - (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), - (GtkAttachOptions) (0), 0, 0); - gtk_label_set_justify(GTK_LABEL(label15), GTK_JUSTIFY_LEFT); - gtk_misc_set_alignment(GTK_MISC(label15), 0, 0.5); - - vseparator1 = gtk_vseparator_new(); - gtk_widget_show(vseparator1); - gtk_table_attach(GTK_TABLE(table1), vseparator1, 2, 3, 0, 3, - (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), - (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), 0, 0); - - - return vbox1; + return gtk_label_new("Not implemented yet."); } gboolean net_update(gpointer data) { MainWindow *mainwindow = (MainWindow *) data; NetDevice *net; - + static NetDevice *netold = NULL; + if (!mainwindow) return FALSE; net = hi_scan_net(); + + if (!net) + return FALSE; + + if (!netold) { + netold = net; + } else { + NetDevice *nd1, *nd2; + + for (nd1 = netold, nd2 = net; nd1 && nd2; + nd1 = nd1->next, nd2 = nd2->next) { + + g_print ("iface %s: %ld bytes/s up, %ld bytes/s down\n", + nd1->iface, + nd2->trans_bytes - nd1->trans_bytes, + nd2->recv_bytes - nd1->recv_bytes); + } + + netold = net; + } + g_print("\n\n"); + return TRUE; } @@ -182,7 +69,7 @@ NetDevice *hi_scan_net(void) while (fgets(buffer, 256, proc_net)) { if (strchr(buffer, ':')) { gint trash; - gchar ifacename[4]; + gchar ifacename[16]; gchar *buf = buffer; gint i; @@ -192,26 +79,24 @@ NetDevice *hi_scan_net(void) buf = g_strstrip(buf); - memset(ifacename, 0, 4); + memset(ifacename, 0, 16); - for (i = 0; buffer[i] != ':' && i < 4; i++) { + for (i = 0; buffer[i] != ':' && i < 16; i++) { ifacename[i] = buffer[i]; } walk_until_inclusive(':'); /* iface: bytes packets errs drop fifo frame compressed multicast */ - sscanf(buf, "%d %d %d %d %d %d %d %d %d %d %d", + sscanf(buf, "%ld %ld %ld %d %d %d %d %d %ld %ld %ld", &net_dev->recv_bytes, &net_dev->recv_packets, &net_dev->recv_errors, &trash, &trash, &trash, &trash, &trash, &net_dev->trans_bytes, &net_dev->trans_packets, &net_dev->trans_errors); - g_print("%s -> %d %d %d | %d %d %d\n", - ifacename, net_dev->recv_bytes, net_dev->recv_errors, - net_dev->recv_packets, net_dev->trans_bytes, - net_dev->trans_errors, net_dev->trans_packets); + g_print("%ld\n", net_dev->recv_bytes); + net_dev->iface = g_strdup(ifacename); } } fclose(proc_net); |