📄 traffic.c
字号:
init_horizpanel(i, panel) Panel panel;{ char buf[20]; slider_item[i] = panel_create_item(panel, PANEL_CYCLE, PANEL_CHOICE_YS, ATTR_ROW(0) + 4, 0, PANEL_CHOICE_IMAGES, proof_pr, proof_pr1, 0, PANEL_NOTIFY_PROC, slider_cycle, 0); sprintf(buf, "%d.%01d secs", INITSPEED/10, INITSPEED%10); speedvalue_item[i] = panel_create_item(panel, PANEL_MESSAGE, PANEL_LABEL_STRING, buf, 0); speed_item[i] = panel_create_item(panel, PANEL_SLIDER, PANEL_MIN_VALUE, 1, PANEL_MAX_VALUE, 100,/* tenths of a sec */ PANEL_SHOW_ITEM, 1, PANEL_VALUE, INITSPEED, PANEL_NOTIFY_LEVEL, PANEL_ALL, PANEL_SHOW_VALUE, FALSE, PANEL_SHOW_RANGE, FALSE, PANEL_NOTIFY_PROC, speed_slider, 0); scale_item[i] = panel_create_item(panel, PANEL_CYCLE, PANEL_CHOICE_YS, ATTR_ROW(0) + 4, 0, PANEL_CHOICE_STRINGS, "Rel", "Abs", 0, PANEL_NOTIFY_PROC, scale_cycle, 0); grid_item[i] = panel_create_item(panel, PANEL_TOGGLE, PANEL_ITEM_Y, ATTR_ROW(0), /* kludge! */ PANEL_CHOICE_IMAGES, &grid_pr, 0, PANEL_NOTIFY_PROC, grid_toggle, 0); panel_create_item(panel, PANEL_BUTTON, PANEL_LABEL_IMAGE, panel_button_image(panel, "Delete Me", 0, 0), PANEL_NOTIFY_PROC, delete_button, 0); speed_item1[i] = panel_create_item(panel, PANEL_SLIDER, PANEL_MIN_VALUE, 10, PANEL_MAX_VALUE, 300,/* secs */ PANEL_SHOW_ITEM, 0, PANEL_VALUE, INITSPEED1, PANEL_NOTIFY_LEVEL, PANEL_ALL, PANEL_ITEM_X, panel_get(speed_item[i], PANEL_ITEM_X), PANEL_ITEM_Y, panel_get(speed_item[i], PANEL_ITEM_Y), PANEL_SHOW_VALUE, FALSE, PANEL_SHOW_RANGE, FALSE, PANEL_NOTIFY_PROC, speed1_slider, 0); window_fit(panel);}init_toppanel(panel) Panel panel;{ Panel_item split_item; srctoggle_item = panel_create_item(panel, PANEL_TOGGLE, PANEL_ITEM_Y, ATTR_ROW(0), /* kludge! */ PANEL_CHOICE_STRINGS, "Filter", 0, PANEL_NOTIFY_PROC, src_toggle, 0); src_item = panel_create_item(panel, PANEL_TEXT, PANEL_ITEM_Y, ATTR_ROW(0) + 5, /* kludge! */ PANEL_LABEL_STRING, "Src:", PANEL_VALUE_DISPLAY_LENGTH, 12, PANEL_NOTIFY_PROC, src_text, 0); dsttoggle_item = panel_create_item(panel, PANEL_TOGGLE, PANEL_ITEM_Y, ATTR_ROW(0), /* kludge! */ PANEL_CHOICE_STRINGS, "Filter", 0, PANEL_NOTIFY_PROC, dst_toggle, 0); dst_item = panel_create_item(panel, PANEL_TEXT, PANEL_ITEM_Y, ATTR_ROW(0) + 5, /* kludge! */ PANEL_LABEL_STRING, "Dst:", PANEL_VALUE_DISPLAY_LENGTH, 12, PANEL_NOTIFY_PROC, dst_text, 0); split_item = panel_create_item(panel, PANEL_BUTTON, PANEL_ITEM_Y, ATTR_ROW(0) + 3, /* kludge! */ PANEL_LABEL_IMAGE, panel_button_image(panel, "Split", 0, 0), PANEL_NOTIFY_PROC, split_button, 0); quit_item = panel_create_item(panel, PANEL_BUTTON, PANEL_ITEM_Y, ATTR_ROW(0) + 3, /* kludge! */ PANEL_LABEL_IMAGE, panel_button_image(panel, "Quit", 0, 0), PANEL_NOTIFY_PROC, quit_button, 0); prototoggle_item = panel_create_item(panel, PANEL_TOGGLE, PANEL_ITEM_X, ATTR_COL(0), PANEL_ITEM_Y, ATTR_ROW(1) + 10, PANEL_CHOICE_STRINGS, "Filter", 0, PANEL_NOTIFY_PROC, proto_toggle, 0); proto_item = panel_create_item(panel, PANEL_TEXT, PANEL_ITEM_Y, ATTR_ROW(1) + 15, /* kludge! */ PANEL_LABEL_STRING, "Proto:", PANEL_VALUE_DISPLAY_LENGTH, 12, PANEL_NOTIFY_PROC, proto_text, 0); lnthtoggle_item = panel_create_item(panel, PANEL_TOGGLE, PANEL_ITEM_Y, ATTR_ROW(1) + 10, /* kludge! */ PANEL_ITEM_X, panel_get(dsttoggle_item, PANEL_ITEM_X), PANEL_CHOICE_STRINGS, "Filter", 0, PANEL_NOTIFY_PROC, lnth_toggle, 0); lnth_item = panel_create_item(panel, PANEL_TEXT, PANEL_ITEM_Y, ATTR_ROW(1) + 15, /* kludge! */ PANEL_LABEL_STRING, "Lnth:", PANEL_VALUE_DISPLAY_LENGTH, 12, PANEL_NOTIFY_PROC, lnth_text, 0); nopkts_item = panel_create_item(panel, PANEL_TOGGLE, PANEL_ITEM_Y, ATTR_ROW(1) + 13, /* kludge! */ PANEL_ITEM_X, panel_get(split_item, PANEL_ITEM_X), PANEL_SHOW_ITEM, 0, PANEL_PAINT, PANEL_NO_CLEAR, PANEL_FEEDBACK, PANEL_INVERTED, PANEL_CHOICE_IMAGES, panel_button_image(panel, "no packets rcved", 0, 0), 0, 0); window_fit_height(panel);}nopkts(x){ static int show = 0; if (x) { panel_set(nopkts_item, PANEL_SHOW_ITEM, x, 0); panel_set_value(nopkts_item, 0); panel_set_value(nopkts_item, 1); show = 1; } else if (!x && show) { panel_set(nopkts_item, PANEL_SHOW_ITEM, x, 0); show = 0; }}/* ARGSUSED */Panel_settingsrc_text(item, event) Panel_item item; struct inputevent *event;{ char *addrstr; struct addrmask amask; int ok; addrstr = panel_get_value(src_item); if (addrstr && addrstr[0]) ok = traf_addrtomask(&amask, addrstr); else { amask.a_mask = 0; ok = 0; } setmask(amask, ETHERSTATPROC_SELECTSRC); if (ok) panel_set_value(srctoggle_item, 1); else panel_set_value(srctoggle_item, 0); return (PANEL_NONE);}/* ARGSUSED */src_toggle(item, value, event) Panel_item item; struct inputevent *event;{ struct addrmask amask; char *addrstr; int ok; if (value == 1) { addrstr = panel_get_value(src_item); if (addrstr && addrstr[0]) ok = traf_addrtomask(&amask, addrstr); else { amask.a_mask = 0; ok = 0; } if (!ok) panel_set_value(srctoggle_item, 0); } else amask.a_mask = 0; setmask(amask, ETHERSTATPROC_SELECTSRC);}/* ARGSUSED */Panel_settingdst_text(item, event) Panel_item item; struct inputevent *event;{ char *addrstr; struct addrmask amask; int ok; addrstr = panel_get_value(dst_item); if (addrstr && addrstr[0]) ok = traf_addrtomask(&amask, addrstr); else { amask.a_mask = 0; ok = 0; } setmask(amask, ETHERSTATPROC_SELECTDST); if (ok) panel_set_value(dsttoggle_item, 1); else panel_set_value(dsttoggle_item, 0); return (PANEL_NONE);}/* ARGSUSED */dst_toggle(item, value, event) Panel_item item; struct inputevent *event;{ struct addrmask amask; char *addrstr; int ok; if (value == 1) { addrstr = panel_get_value(dst_item); if (addrstr && addrstr[0]) ok = traf_addrtomask(&amask, addrstr); else { amask.a_mask = 0; ok = 0; } if (!ok) panel_set_value(dsttoggle_item, 0); } else amask.a_mask = 0; setmask(amask, ETHERSTATPROC_SELECTDST);}/* ARGSUSED */Panel_settingproto_text(item, event) Panel_item item; struct inputevent *event;{ char *protostr; struct addrmask amask; int ok; protostr = panel_get_value(proto_item); if (protostr && protostr[0]) ok = prototomask(&amask, protostr); else { amask.a_mask = 0; ok = 0; } setmask(amask, ETHERSTATPROC_SELECTPROTO); if (ok) panel_set_value(prototoggle_item, 1); else panel_set_value(prototoggle_item, 0); return (PANEL_NONE);}/* ARGSUSED */proto_toggle(item, value, event) Panel_item item; struct inputevent *event;{ struct addrmask amask; char *protostr; int ok; if (value == 1) { protostr = panel_get_value(proto_item); if (protostr && protostr[0]) ok = prototomask(&amask, protostr); else { amask.a_mask = 0; ok = 0; } if (!ok) panel_set_value(prototoggle_item, 0); } else amask.a_mask = 0; setmask(amask, ETHERSTATPROC_SELECTPROTO);}/* ARGSUSED */Panel_settinglnth_text(item, event) Panel_item item; struct inputevent *event;{ char *lnthstr; struct addrmask amask; int ok; lnthstr = panel_get_value(lnth_item); if (lnthstr && lnthstr[0]) ok = lnthtomask(&amask, lnthstr); else { amask.a_mask = 0; ok = 0; } setmask(amask, ETHERSTATPROC_SELECTLNTH); if (ok) panel_set_value(lnthtoggle_item, 1); else panel_set_value(lnthtoggle_item, 0); return (PANEL_NONE);}/* ARGSUSED */lnth_toggle(item, value, event) Panel_item item; struct inputevent *event;{ struct addrmask amask; char *lnthstr; int ok; if (value == 1) { lnthstr = panel_get_value(lnth_item); if (lnthstr && lnthstr[0]) ok = lnthtomask(&amask, lnthstr); else { amask.a_mask = 0; ok = 0; } if (!ok) panel_set_value(lnthtoggle_item, 0); } else amask.a_mask = 0; setmask(amask, ETHERSTATPROC_SELECTLNTH);}makesubwindows(i){ if (horizpanel[i]) return; horizpanel[i] = window_create(frame, PANEL, WIN_X, 0, WIN_BELOW, i ? canvas[i-1] : toppanel, PANEL_ITEM_X_GAP, 26, /* experimentally determined constant */ 0); if (horizpanel[i] == NULL) fputs("Can't make panel\n", stderr), exit(1); init_horizpanel(i, horizpanel[i]); vertpanel[i] = window_create(frame, PANEL, WIN_BELOW, i? vertpanel[i-1] : toppanel, WIN_RIGHT_OF, horizpanel[i], 0); if (vertpanel[i] == NULL) fputs("Can't make panel\n", stderr), exit(1); init_vertpanel(i, vertpanel[i]); canvas[i] = window_create(frame, CANVAS, CANVAS_RETAINED, 0, CANVAS_FIXED_IMAGE, 0, CANVAS_REPAINT_PROC, repaint, CANVAS_RESIZE_PROC, resize, WIN_X, 0, WIN_BELOW, horizpanel[i], 0); if (canvas[i] == NULL) fputs("Can't create subwindow\n", stderr), exit(1); pixwin[i] = (Pixwin *)window_get(canvas[i], CANVAS_PIXWIN);}traf_usage(){ fprintf(stderr, "Usage: traffic [-h host] [-s subwindowcnt]\n"); exit(1);}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -