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

📄 igmpcon_cli.c

📁 igmp for switch in vxworks
💻 C
📖 第 1 页 / 共 5 页
字号:
				}
				else if (ptmp->state == failmaxgroup)
				{
					vty_out (vty,
						"%d.%s, port(%2d:%2d:%1d)(p) fails to join  group(%s): reachs the groups limit.\n",
						j, ptmp->time, slotnew, ptmp->onu, ptmp->onuPort, ip);
				}
				else if (ptmp->state == failvlan)
				{
					vty_out (vty,
						"%d.%s, port(%2d:%2d:%1d)(p) fails to join  group(%s): vlan mismatched.\n",
						j, ptmp->time, slotnew, ptmp->onu, ptmp->onuPort, ip);
				}
				else if (ptmp->state == failupbd)
				{
					vty_out (vty,
						"%d.%s, port(%2d:%2d:%1d)(p) fails to join  group(%s): reachs the bandwidth limit.\n",
						j, ptmp->time, slotnew, ptmp->onu, ptmp->onuPort, ip);
				}
				else
				{
					vty_out (vty,
						"%d.%s, port(%2d:%2d:%1d)(p) fails to join  group(%s).\n",
						j, ptmp->time, slotnew, ptmp->onu, ptmp->onuPort, ip);
				}

			}
			else
			{
				if (ptmp->state == success)
				{
					vty_out (vty,
						"%d.%s, port(%2d:%2d:%1d) joins  group(%s) successfully.\n",
						j, ptmp->time, slotnew, ptmp->onu, ptmp->onuPort, ip);
				}
				else if (ptmp->state == failauth)
				{
					vty_out (vty,
						"%d.%s, port(%2d:%2d:%1d) fails to join  group(%s): not passed  authentication.\n",
						j, ptmp->time, slotnew, ptmp->onu, ptmp->onuPort, ip);
				}
				else if (ptmp->state == failmaxgroup)
				{
					vty_out (vty,
						"%d.%s, port(%2d:%2d:%1d) fails to join  group(%s): reachs the groups limit.\n",
						j, ptmp->time, slotnew, ptmp->onu, ptmp->onuPort, ip);
				}
				else if (ptmp->state == failvlan)
				{
					vty_out (vty,
						"%d.%s, port(%2d:%2d:%1d) fails to join  group(%s): vlan mismatched.\n",
						j, ptmp->time, slotnew, ptmp->onu, ptmp->onuPort, ip);
				}
				else if (ptmp->state == failupbd)
				{
					vty_out (vty,
						"%d.%s, port(%2d:%2d:%1d) fails to join  group(%s): reachs the bandwidth limit.\n",
						j, ptmp->time, slotnew, ptmp->onu, ptmp->onuPort, ip);
				}
				else
				{
					vty_out (vty,
						"%d.%s, port(%2d:%2d:%1d) fails to join  group(%s).\n",
						j, ptmp->time, slotnew, ptmp->onu, ptmp->onuPort, ip);
				}
			}
		}

		/*离开 */
		if (ptmp->cmd == 0)
		{
			if (ptmp->preview == 2)
			{
				if (ptmp->state == leavenormal)
				{
					vty_out (vty,
						"%d.%s, port(%2d:%2d:%1d)(p) leaves group(%s).\n", j, j,
						ptmp->time, slotnew, ptmp->onu, ptmp->onuPort, ip);
				}
				else
				{
					vty_out (vty,
						"%d.%s, port(%2d:%2d:%1d)(p) forced to leave group(%s).\n",
						j, ptmp->time, slotnew, ptmp->onu, ptmp->onuPort, ip);
				}
			}
			else
			{
				if (ptmp->state == leavenormal)
				{
					vty_out (vty,
						"%d.%s, port(%2d:%2d:%1d) leaves group(%s).\n", j,
						ptmp->time, slotnew, ptmp->onu, ptmp->onuPort, ip);
				}
				else
				{
					vty_out (vty,
						"%d.%s, port(%2d:%2d:%1d) forced to leave group(%s).\n",
						j, ptmp->time, slotnew, ptmp->onu, ptmp->onuPort, ip);
				}
			}
		}
		if (ptmp->cmd == 2)
		{
			if (ptmp->preview == 2)
			{
				vty_out (vty,
					"%d.%s, port(%2d:%2d:%1d)(p) staying in group(%s) %d minutes.\n",
					j, ptmp->time, slotnew, ptmp->onu, ptmp->onuPort, ip,
					ptmp->staying);
			}
			else
			{
				vty_out (vty,
					"%d.%s, port(%2d:%2d:%1d) staying in group(%s) %d minutes.\n",
					j, ptmp->time, slotnew, ptmp->onu, ptmp->onuPort, ip,
					ptmp->staying);
			}
		}
		ptmp = ptmp->pNext;
		count--;
	}
	semGive (semConLog);
}

/*显示指定端口的日志信息*/

/*************************************************
  Function:  ShowPortRecord     
  Description:  show igmp record by port 
  Input: UCHAR slot, UCHAR onu, UCHAR onuPort, int count,
	struct vty *vty        	 
  Output:         
  Return:         
  Others:        
*************************************************/
void ShowPortRecord (UCHAR slot, UCHAR onu, UCHAR onuPort, int count,
	struct vty *vty)
{
	PortRecord *ptmp;
	struct in_addr gip;
	char ip[20];
	int countmax;
	int i = 0, j = 0;
	int slotnew;
	int pvc;
	int semlog;

	countmax = recordcount;

	/*显示全部 */
	if (!count)
	{
		count = recordcount;
	}

	if (count >= recordcount)
	{
		count = recordcount;
	}

	semlog = semTake (semConLog, 1);
	if (ERROR == semlog)
	{
		printf ("Take semConLog error!\r\n");
		semtakeerror++;
		return;
	}
	ptmp = recordlist;
	while (ptmp && count && countmax)
	{
		if (ptmp->onu == onu && ptmp->onuPort == onuPort && ptmp->slot == slot)
		{
			j++;
			slotnew = ptmp->slot;
			if (slotnew > 8)
			{
				slotnew = slotnew + 2;
			}
			gip.s_addr = ptmp->groupaddress;
			inet_ntoa_b (gip, ip);
			if (ptmp->cmd == 1)
			{
				if (ptmp->preview == 2)
				{
					if (ptmp->state == success)
					{
						vty_out (vty,
							"%d.%s, port(%2d:%2d:%1d)(p) joins  group(%s) successfully.\n",
							j, ptmp->time, slotnew, ptmp->onu, ptmp->onuPort,
							ip);
					}
					else if (ptmp->state == failpreview)
					{
						vty_out (vty,
							"%d.%s, port(%2d:%2d:%1d)(p) fails to join  group(%s): not has preview right this moment.\n",
							j, ptmp->time, slotnew, ptmp->onu, ptmp->onuPort,
							ip);
					}
					else if (ptmp->state == failmaxgroup)
					{
						vty_out (vty,
							"%d.%s, port(%2d:%2d:%1d)(p) fails to join  group(%s): reachs the groups limit.\n",
							j, ptmp->time, slotnew, ptmp->onu, ptmp->onuPort,
							ip);
					}
					else if (ptmp->state == failvlan)
					{
						vty_out (vty,
							"%d.%s, port(%2d:%2d:%1d)(p) fails to join  group(%s): vlan mismatched.\n",
							j, ptmp->time, slotnew, ptmp->onu, ptmp->onuPort,
							ip);
					}
					else if (ptmp->state == failupbd)
					{
						vty_out (vty,
							"%d.%s, port(%2d:%2d:%1d)(p) fails to join  group(%s): reachs the bandwidth limit.\n",
							j, ptmp->time, slotnew, ptmp->onu, ptmp->onuPort,
							ip);
					}
					else
					{
						vty_out (vty,
							"%d.%s, port(%2d:%2d:%1d)(p) fails to join  group(%s).\n",
							j, ptmp->time, slotnew, ptmp->onu, ptmp->onuPort,
							ip);
					}

				}
				else
				{
					if (ptmp->state == success)
					{
						vty_out (vty,
							"%d.%s, port(%2d:%2d:%1d) joins  group(%s) successfully.\n",
							j, ptmp->time, slotnew, ptmp->onu, ptmp->onuPort,
							ip);
					}
					else if (ptmp->state == failauth)
					{
						vty_out (vty,
							"%d.%s, port(%2d:%2d:%1d) fails to join  group(%s): not passed  authentication.\n",
							j, ptmp->time, slotnew, ptmp->onu, ptmp->onuPort,
							ip);
					}
					else if (ptmp->state == failmaxgroup)
					{
						vty_out (vty,
							"%d.%s, port(%2d:%2d:%1d) fails to join  group(%s): reachs the groups limit.\n",
							j, ptmp->time, slotnew, ptmp->onu, ptmp->onuPort,
							ip);
					}
					else if (ptmp->state == failvlan)
					{
						vty_out (vty,
							"%d.%s, port(%2d:%2d:%1d) fails to join  group(%s): vlan mismatched.\n",
							j, ptmp->time, slotnew, ptmp->onu, ptmp->onuPort,
							ip);
					}
					else if (ptmp->state == failupbd)
					{
						vty_out (vty,
							"%d.%s, port(%2d:%2d:%1d) fails to join  group(%s): reachs the bandwidth limit.\n",
							j, ptmp->time, slotnew, ptmp->onu, ptmp->onuPort,
							ip);
					}
					else
					{
						vty_out (vty,
							"%d.%s, port(%2d:%2d:%1d) fails to join  group(%s).\n",
							j, ptmp->time, slotnew, ptmp->onu, ptmp->onuPort,
							ip);
					}
				}
			}

			/*离开 */
			if (ptmp->cmd == 0)
			{
				if (ptmp->preview == 2)
				{
					if (ptmp->state == 0)
					{
						vty_out (vty,
							"%d.%s, port(%2d:%2d:%1d)(p) leaves group(%s).\n",
							j, j, ptmp->time, slotnew, ptmp->onu, ptmp->onuPort,
							ip);
					}
					else
					{
						vty_out (vty,
							"%d.%s, port(%2d:%2d:%1d)(p) forced to leave group(%s).\n",
							j, ptmp->time, slotnew, ptmp->onu, ptmp->onuPort,
							ip);
					}
				}
				else
				{
					if (ptmp->state == 0)
					{
						vty_out (vty,
							"%d.%s, port(%2d:%2d:%1d) leaves group(%s).\n", j,
							ptmp->time, slotnew, ptmp->onu, ptmp->onuPort, ip);
					}
					else
					{
						vty_out (vty,
							"%d.%s, port(%2d:%2d:%1d) forced to leave group(%s).\n",
							j, ptmp->time, slotnew, ptmp->onu, ptmp->onuPort,
							ip);
					}
				}
			}
			if (ptmp->cmd == 2)
			{
				if (ptmp->preview == 2)
				{
					vty_out (vty,
						"%d.%s, port(%2d:%2d:%1d)(p) staying in group(%s) %d minutes.\n",
						j, ptmp->time, slotnew, ptmp->onu, ptmp->onuPort, ip,
						ptmp->staying);
				}
				else
				{
					vty_out (vty,
						"%d.%s, port(%2d:%2d:%1d) staying in group(%s) %d minutes.\n",
						j, ptmp->time, slotnew, ptmp->onu, ptmp->onuPort, ip,
						ptmp->staying);
				}
			}
			count--;
		}
		ptmp = ptmp->pNext;
		countmax--;
	}
	semGive (semConLog);
}

/*************************************************
  Function: CreateAuthGroup      
  Description: create an auth group node, and set it default group parameters 
  Input:  UINT groupaddress       	 
  Output: n/a        
  Return: none        
  Others:        
*************************************************/
GroupAuth *CreateAuthGroup (UINT groupaddress)
{
	GroupAuth *authgroup;

	authgroup = (GroupAuth *) malloc (sizeof (GroupAuth));
	if (NULL == authgroup)
		return NULL;

	memset (authgroup, 0, sizeof (GroupAuth));
	authgroup->groupaddress = groupaddress;
	authgroup->preCount = previewcount;
	authgroup->preTime = previewtime;
	authgroup->preInterval = previewinterval;
	authgroup->preReset = previewresettime;
	authgroup->pretotaltime = previewTotalTime;
	authgroup->vlanid = 0;
	return authgroup;
}

/*************************************************
  Function:  AddAuthGroupToList     
  Description: add an auth  
  Input: GroupAuth * authgroup        	 
  Output: none  
  Return: none        
  Others:        
*************************************************/
void AddAuthGroupToList (GroupAuth * authgroup)
{
	authgroup->pNext = authlist;
	authgroup->pPrv = NULL;
	if (NULL == authlist)
	{
		authlist = authgroup;
	}
	else
	{
		authlist->pPrv = authgroup;
		authlist = authgroup;
	}
	Totalauthgroup++;
}

/*************************************************
  Function: DelAuthGroupFromList      
  Description:  del auth group node from authlist 
  Input:   GroupAuth * authgroup      	 
  Output:  none       
  Return:  none       
  Others:        
*************************************************/
void DelAuthGroupFromList (GroupAuth * authgroup)
{
	GroupAuth *ptmp;

	ptmp = authgroup;
	/*case single port */
	if (authgroup->pPrv == NULL && NULL == authgroup->pNext)
	{
		free (authgroup);
		authlist = NULL;
	}
	/*case first */
	else if (authgroup->pPrv == NULL && NULL != authgroup->pNext)
	{
		authlist = authgroup->pNext;
		authlist->pPrv = NULL;
		free (authgroup);
	}
	/*case last */
	else if (authgroup->pPrv != NULL && NULL == authgroup->pNext)
	{
		authgroup->pPrv->pNext = NULL;
		free (authgroup);
	}
	/*case middle */
	else
	{
		authgroup->pPrv->pNext = authgroup->pNext;
		authgroup->pNext->pPrv = authgroup->pPrv;
		free (authgroup);
	}

	Totalauthgroup--;
	return;
}

/*配置端口控制使能,1表示打开控制,0表示关闭控制*/

/*************************************************
  Function:  SetPortControl     
  Description:  set onu whether be controled 
  Input:  UCHAR slot, UCHAR onu, UCHAR onuPort, UCHAR act       	 
  Output:         
  Return:  0       
  Others:  the onuport can only set 1, cos the control is set to a onu not a port      
*************************************************/
int SetPortControl (UCHAR slot, UCHAR onu, UCHAR onuPort, UCHAR act)
{
	portstatlist[slot][onu][onuPort].control = act;
	return OK;
}

/*显示一个组的信息*/

/*************************************************
  Function:    ShowOnePort   
  Description:  show onu port informations 
  Input:   UCHAR slot, UCHAR onu, UCHAR onuPort, struct vty *vty      	 
  Output:  none       
  Return:   none      
  Others:        
*************************************************/
void ShowOnePort (UCHAR slot, UCHAR onu, UCHAR onuPort, struct vty *vty)
{
	int auth, state;
	int curbd;
	int count, temp;
	int slotnew;
	GroupAuth *atmp;
	GroupInfo *itmp;
	struct in_addr gip;
	char ip[20];

	temp = portstatlist[slot][onu][onuPort].tmpno;
	/*槽位变化20051027 aibin */
	slotnew = slot;
	if (slot > 8)
	{
		slotnew = slot + 2;
	}
	vty_out (vty, "Port(%d:%d:%2d)\r\n", slotnew, onu, onuPort);
	if (portstatlist[slot][onu][onuPort].control == 1)
	{
		vty_out (vty, "Auth           :     ON\r\n");
	}
	else
	{
		vty_out (vty, "Auth           :     OFF\r\n");
	}

	if (temp)
	{
		vty_out (vty, "Profile        :     %s\r\n", profile[temp].name);
	}
	else
	{
		vty_out (vty, "Profile        :     None\r\n");
	}

	vty_out (vty, "Group limit    :     %d\r\n",
		portstatlist[slot][onu][onuPort].gouplimit);
	if (portstatlist[slot][onu][onuPort].bandwidth)
	{
		curbd = GetCurPortBd (slot, onu, onuPort);
		vty_out (vty, "Bandwidth      :     %d/%d(kbps)\r\n", curbd,
			portstatlist[slot][onu][onuPort].bandwidth);
	}
	else
	{
		vty_out (vty, "Bandwidth      :     Not set\r\n");
	}

	if (portstatlist[slot][onu][onuPort].vlanpeer == 1)
	{
		vty_out (vty, "VLAN strip     :     ON\r\n");
	}
	else
	{
		vty_out (vty, "VLAN strip     :     OFF\r\n");
	}

	if (portstatlist[slot][onu][1].fast_leave_state == 1)
	{
		vty_out (vty, "Leave mode     :     Fast\r\n");
	}
	else
	{
		vty_out (vty, "Leave mode     :     Non-fast\r\n");
	}
	return;
}

/*************************************************
  Function: SetConTemp      
  Description: add a group to an igmp profile and set its state
                    1:normal, 2:preview
                    
  Input:  int act, int tmpno, UINT groupaddress, char state       	 
  Output:  none    
  Return:  success 0, error -1;       
  Others:        
*************************************************/
int SetConTemp (int act, int tmpno, UINT groupaddress, char state)
{
	int i, j;
	GroupAuth *ptmp;
	GroupInfo *onlinegroup;

	ptmp = (GroupAuth *) GetAuthGroup (groupaddress);
	onlinegroup = (GroupInfo *) GetCurGroup (groupaddress);
	/*if (onlinegroup)
	   {
	   printf ("\r\nERROR, this group is online\r\n");
	   return ERROR;
	   } */

⌨️ 快捷键说明

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