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

📄 traffic.c

📁 操作系统SunOS 4.1.3版本的源码
💻 C
📖 第 1 页 / 共 2 页
字号:
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 + -