sud_match.c

来自「TCP-IP红宝书源代码」· C语言 代码 · 共 49 行

C
49
字号
/* sud_match.c - sud_match */

#include <conf.h>
#include <kernel.h>
#include <network.h>

#ifdef	SNMP

#include <snmp.h>
#include <mib.h>
#include <asn1.h>
#include <stdarg.h>

/*---------------------------------------------------------------------
 * sud_match - check if a variable exists in the UDP listener table
 *---------------------------------------------------------------------
 */
int
sud_match(struct snbentry *bindl,
	  ... /* int *field, int *udpn */ )
{
	int 	oidi = SUD_OIDLEN;
	int 	lport;
	va_list ap;
	int *field, *udpn;

	va_start(ap,bindl);
	field = va_arg(ap,int *);
	udpn = va_arg(ap,int *);
	va_end(ap);

	if ((*field = bindl->sb_oid.id[oidi++]) > SNUMF_UDTAB)
	 	return SYSERR;

	oidi += IP_ALEN;  /* skip the IP address */
	lport = bindl->sb_oid.id[oidi++];

	for (*udpn = 0; *udpn < UPPS; ++(*udpn)) {
		if (!upqs[*udpn].up_valid)
			continue;
		if (lport == upqs[*udpn].up_port)
			break;
	}
	if (*udpn >= UPPS || oidi != bindl->sb_oid.len)
	 	return SYSERR;
	return OK;
}
#endif	/* SNMP */

⌨️ 快捷键说明

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