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

📄 igmp_control.c

📁 路由器协议平台igmp协议设计实现源码。
💻 C
字号:
/*
 $Log:: /OEM Source Code/igmp/igmp_control.c                                                       $
 * 
 * 1     4/23/98 9:53p Release Engineer
 * Initial release
 * IGMP v4.1.0
 */
/************************************************************************/
/*  Copyright (C) 1997-1998 RouterWare, Inc.                            */
/*  Unpublished - rights reserved under the Copyright Laws of the       */
/*  United States.  Use, duplication, or disclosure by the              */
/*  Government is subject to restrictions as set forth in               */
/*  subparagraph (c)(1)(ii) of the Rights in Technical Data and         */
/*  Computer Software clause at 252.227-7013.                           */
/*  RouterWare, Inc., 3961 MacArthur Blvd. Suite 212, Newport Beach, CA */
/************************************************************************/
#include <stdlib.h>
#include <stddef.h>
#include "igmp.h"
#include <vnvrmstr.h>
#include "igmp_configuration.h"
/********************************************************************************************/
enum TEST igmp_shutdown (void)
{
	UINT port;

	if (igmp.enabled == FALSE)
		{
		IGMP_PROTOCOL_ALARM_TRACE (IGMP_ALARM_TRACE, "IGMP: Shutdown function called again. Router already shutdown.\n");

		return (FAIL);
		}

	for (port = 0; port < igmp.number_of_ports; ++port)
		{
		free_list (((LINK *)&igmp.port_table[port].active_group_list), (void (*) (void *vptr_data_to_free)) table_free);

		initialize_igmp_port (port);
		}

	if (ip_deregister_upper_layer_protocol (IGMP_PROTOCOL) == FAIL)
		{
		IGMP_PROTOCOL_ALARM_TRACE (IGMP_ALARM_TRACE, "IGMP: Failed to deregister with IP. Continuing shutdown.\n");
		}
		
	if (igmp.stack_id != 0x00000000L)
		{
#if defined (__LSL__)
		lsl_control (DEREGISTER_PROTOCOL_STACK, (ULONG) NETWORK_LAYER_TYPE, (ULONG) igmp.stack_id);
#endif /* __LSL__ */

		igmp.stack_id = 0x00000000L;
		}

	igmp.enabled = FALSE;
	
	return (PASS);
}
/********************************************************************************************/
enum TEST igmp_control (enum PROTOCOL_CONTROL_OPERATION command, ULONG parameter_0, ULONG parameter_1, ULONG parameter_2)
{
	enum TEST return_value;

	IGMP_PROTOCOL_ALARM_TRACE (IGMP_ALARM_TRACE, "IGMP: Control function called.\n");

	PARAMETER_NOT_USED (parameter_0);

	PARAMETER_NOT_USED (parameter_2);

	switch (command)
		{
		case CLOSE_PROTOCOL_STACK:

			return_value = igmp_shutdown ();

			break;


		case GET_NUMBER_OF_PROTOCOL_STACKS_VIRTUAL_PORTS:

			*((USHORT *) parameter_1) = (USHORT) igmp.number_of_ports;

			break;

		default:
			/* don't do anything */
			return (FAIL);
		}

	return (PASS);
}

⌨️ 快捷键说明

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