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

📄 defaultopts.c

📁 《unix网络编程第二卷》中的源代码
💻 C
字号:
#include	"unpxti.h"static	struct t_optmgmt	*req, *ret;voidxti_def_uchar_opt(int fd, const char *str, t_scalar_t level, t_scalar_t name){	struct t_opthdr		*topt;	topt = (struct t_opthdr *) req->opt.buf;	topt->level = level;	topt->name = name;	topt->len = sizeof(struct t_opthdr);	req->opt.len = topt->len;		req->flags = T_DEFAULT;	printf("%s: ", str);	if (t_optmgmt(fd, req, ret) == -1) {		printf("t_optmgmt error\n");	} else {		topt = (struct t_opthdr *) ret->opt.buf;		printf("len = %d, ", topt->len);		if (topt->status == T_SUCCESS || topt->status == T_READONLY)			printf("%u\n", *((u_char *) (topt + 1)));		else			printf("status = %ld\n", topt->status);	}}voidxti_def_uscalar_opt(int fd, const char *str, t_uscalar_t level, t_uscalar_t name){	struct t_opthdr		*topt;	topt = (struct t_opthdr *) req->opt.buf;	topt->level = level;	topt->name = name;	topt->len = sizeof(struct t_opthdr);	req->opt.len = topt->len;		req->flags = T_DEFAULT;	printf("%s: ", str);	if (t_optmgmt(fd, req, ret) == -1) {		printf("t_optmgmt error\n");	} else {		topt = (struct t_opthdr *) ret->opt.buf;		printf("len = %d, ", topt->len);		if (topt->status == T_SUCCESS || topt->status == T_READONLY)			printf("%u\n", *((t_uscalar_t *) (topt + 1)));		else			printf("status = %ld\n", topt->status);	}}intmain(int argc, char **argv){	int					fd;	if (argc != 2)		err_quit("usage: checkopts <device>");	fd = T_open(argv[1], O_RDWR, NULL);	T_bind(fd, NULL, NULL);	req = T_alloc(fd, T_OPTMGMT, T_ALL);	ret = T_alloc(fd, T_OPTMGMT, T_ALL);	xti_def_uchar_opt(fd, "T_IP_TOS", T_INET_IP, T_IP_TOS);	xti_def_uchar_opt(fd, "T_IP_TTL", T_INET_IP, T_IP_TTL);	xti_def_uscalar_opt(fd, "T_TCP_MAXSEG", T_INET_TCP, T_TCP_MAXSEG);	xti_def_uscalar_opt(fd, "T_TCP_NODELAY", T_INET_TCP, T_TCP_NODELAY);	exit(0);}

⌨️ 快捷键说明

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