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

📄 x_ospf.c,v

📁 关于SHELL方面的
💻 C,V
字号:
head	1.1;access;symbols;locks	dls:1.1; strict;comment	@ * @;1.1date	97.09.21.19.29.03;	author dls;	state Dist;branches;next	;desc@@1.1log@pre-3e code@text@/* x_ospf.c - x_ospf */#include <conf.h>#include <kernel.h>#include <network.h>#ifdef OSPF#include <ospf.h>#endif /* OSPF */char	str[120];#ifdef OSPFstatic	int	noarg(), aarg(), darg(), iarg(), narg();#endif /* OSPF *//*------------------------------------------------------------------------ *  x_ospf  -  (command ospf) print ospf status information *------------------------------------------------------------------------ */COMMAND x_ospf(stdin, stdout, stderr, nargs, args)int	stdin, stdout, stderr, nargs;char	*args[];{#ifdef	OSPF	if (nargs == 1)		return noarg(stdout, stderr);	if (nargs > 2 || *args[1] != '-') {		write(stderr, "usage: ospf -[adin]\n", 19);		return 1;	}	switch (args[1][1]) {	case	'a':	return aarg(stdout, stderr);	case	'd':	return darg(stdout, stderr);	case	'i':	return iarg(stdout, stderr);	case	'n':	return narg(stdout, stderr);	default:		write(stderr, "usage: ospf -[adin]\n", 19);		return 1;	}#else	/* OSPF */	write(stderr, "ospf: no OSPF support installed\n", 32);#endif	/* OSPF */}#ifdef OSPFstatic	intnoarg(stdout, stderr){}static	intaarg(stdout, stderr){	struct ospf_ar	*par = &ospf_ar[0];	int		i;	for (i=0; i<NAREA; ++i, ++par) {		sprintf(str, "Area %d: authype %d", par->ar_id,			par->ar_authtype);		write(stdout, str, strlen(str));		if (par->ar_authtype == AU_PASSWD) {			sprintf(str, "password \"%s\"\n", par->ar_auth);			write(stdout, str, strlen(str));		} else			putc(stdout, '\n');	}}#define IH1 \"ifn    State   Prio    RID      DRID     BRID\n"#define IH2 \"---- --------- ----  -------- -------- --------\n"static char *ifsnames[] = { "DOWN", "LOOP", "WAITING", "PT2PT", "DROTHER", 	"BACKUP", "DESIGNATE" };static	intiarg(stdout, stderr){	struct ospf_if	*pif = &ospf_if[0];	int		ifn;	write(stdout, IH1, sizeof(IH1));	write(stdout, IH2, sizeof(IH2));	for (ifn=0; ifn<NIF; ++ifn, ++pif) {		sprintf(str, "%4d %9s %4d", ifn,			ifsnames[pif->if_state], pif->if_prio);		write(stdout, str, strlen(str));		if (pif->if_state != IFS_DOWN) {			sprintf(str, "  %08X %08X %08X",				net2hl(pif->if_rid),				net2hl(pif->if_drid),				net2hl(pif->if_brid));			write (stdout, str, strlen(str));		}		putc(stdout, '\n');	}}char	*nbsnames[] = { "DOWN", "ATTEMPT", "INIT", "TWOWAY", "EXSTART",			"EXCHANGE", "LOADING", "FULL" };#define	NH1 \"Intf.    State  Sequence    RID     DRID      BRID     prio  opts timeleft\n"#define NH2 \"-----  -------- --------- -------- --------  --------  ----  ---- --------\n"static	intnarg(stdout, stderr)int	stdout, stderr;{	char	ipa[16];	/* "XXX.XXX.XXX.XXX\0" */	struct ospf_nb	*pnb;	int	i, ifn;	write(stdout, NH1, strlen(NH1));	write(stdout, NH2, strlen(NH2));	for (ifn=0; ifn<NIF; ++ifn) {		struct ospf_if	*pif = &ospf_if[ifn];		if (pif->if_state == IFS_DOWN)			continue;		pnb = &pif->if_nbtab[1];		for (i=0; i<MAXNBR; ++i, ++pnb) {			if (pnb->nb_state == NBS_DOWN)				continue;			sprintf(str,			    "%4d %9s  %8X  %08X %08X  %08X %5d %c%c%c%11d\n",			    ifn, nbsnames[pnb->nb_state], pnb->nb_seq,			    net2hl(pnb->nb_rid), net2hl(pnb->nb_drid),			    net2hl(pnb->nb_brid),			    pnb->nb_prio, pnb->nb_opts & NBO_T ? 'T' : ' ',			    pnb->nb_opts & NBO_E ? 'E' : ' ',			    pnb->nb_master ? 'M' : ' ', pnb->nb_lastheard);			write(stdout, str, strlen(str));		}	}	return(OK);}#define	DBH1 \"  LSID      RID    Type    Seq     Age\n"#define	DBH2 \"-------- --------  ---- --------  ----\n"static int dbprint1();static	intdarg(stdout, stderr)int	stdout, stderr;{	struct ospf_ar	*par;	struct ospf_db	*pdb;	int		arn;	for (arn=0; arn<NAREA; ++arn) {		par = &ospf_ar[arn];		sprintf(str, "Area %d\n----------\n", arn);		write(stdout, str, strlen(str));		write(stdout, DBH1, sizeof(DBH1));		write(stdout, DBH2, sizeof(DBH2));		wait(par->ar_dbmutex);		for (pdb=par->ar_dblhead; pdb; pdb=pdb->db_lnext)			dbprint1(stdout, pdb);		signal(par->ar_dbmutex);			}}static intdbprint1(stdout, pdb)int	stdout;struct ospf_db	*pdb;{	struct ospf_lsa	*plsa = &pdb->db_lsa;	sprintf(str, "%08X %08X %4d  %08X %3d\n",		net2hl(plsa->lsa_lsid), net2hl(plsa->lsa_rid), plsa->lsa_type,		plsa->lsa_seq, net2hs(plsa->lsa_age));	write(stdout, str, strlen(str));}#endif	/* OSPF */@

⌨️ 快捷键说明

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