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

📄 ge_cmddispatch.c

📁 程序是一个vxworks下对PMC公司3386千兆MAC芯片的驱动和配置
💻 C
📖 第 1 页 / 共 2 页
字号:
                			{
                				if(GE_MESSAGE_DEBUG)
                					GE_printf(GE_EVENT,"GE_cmdDispatch:sending MGMT_LINE_STATE_REQ to MainCommand succeed!\n");
                				free(pBuf);
                				return OK;
                			}
	   			}
                        	
				if(subType==MGMT_LINE_MTU_REQ)
	   			{
	   				bcopy(GenMsg->data, TaskMsg.msgBuf, GenMsg->length);
	   				if (msgQSend (  SBSL_TaskMsgIdGet(	GE_MAINCMD_TASK_CODE), 
                        	    						(char *)(&TaskMsg),
                        	    						140, 
                        	   						NO_WAIT,
                        	   			 			MSG_PRI_NORMAL )== ERROR)
	        			{
	        				if(GE_MESSAGE_DEBUG)
                					GE_printf(GE_ALARM,"GE_cmdDispatch: sending MGMT_LINE_MTU_REQ to MainCommand failed!\n");
                				free(pBuf);
                				return OK;
               			        }
                			else
                			{
                				GE_printf(GE_EVENT,"GE_cmdDispatch:sending MGMT_LINE_MTU_REQ to MainCommand succeed!\n");
                				free(pBuf);
                				return OK;
                			}
	   			}	   			
			} 
		break;
                  
		case SYS_ARP_ENTRY_REQUEST :
       
             		TaskMsg.taskCode = BDCOM_TX_TASK_CODE;
             		TaskMsg.type 	= GenMsg->type;
             		TaskMsg.length	= GenMsg->length;
             		memset(TaskMsg.msgBuf, 0, 128);
             		bcopy(GenMsg->data,TaskMsg.msgBuf,  GenMsg->length);
        	
	   		if (BOARD_STATE == BOARD_STATE_NORMAL)
	  		{
            			 if ((msgQSend ( SBSL_TaskMsgIdGet(GE_ARP_TASK_CODE), 
                            			(char *)(&TaskMsg),
                            			140, 
                           		 	NO_WAIT,
                            			MSG_PRI_NORMAL )) == ERROR)
	    	 		{
               				if(GE_MESSAGE_DEBUG)
               					GE_printf(GE_ALARM,"GE_cmdDispatch: sending GE_ARP_INDEX to ARP failed!\n");
                	 		free(pBuf);
                			return OK;
            	 		}
                 		else
            	 		{
              		 		 GE_printf(GE_EVENT,"GE_cmdDispatch: sending GE_ARP_INDEX to ARP succeed!\n");
              		 		 free(pBuf);
                			 return OK;
              		 	}
	   		}
            		if (BOARD_STATE == BOARD_STATE_INITLIZE)     	
       	    		{
           			 if(GE_MESSAGE_DEBUG)
           			 	GE_printf(GE_ALARM,"GE_cmdDispatch:It can not be dealt with  in init state\n");
           	 		 free(pBuf);
                		 return OK;
           		}
          	break;   

		case SYS_SHUTDOWN:
   
      			TaskMsg.taskCode = BDCOM_TX_TASK_CODE;
            		TaskMsg.type = GenMsg->type;
             		TaskMsg.length = GenMsg->length;
            		memset(TaskMsg.msgBuf, 0, 128);
       
			if (BOARD_STATE == BOARD_STATE_NORMAL)
			{
            			if ((msgQSend ( SBSL_TaskMsgIdGet(GE_MAINCMD_TASK_CODE), 
                            			(char *)(&TaskMsg),
                           			140, 
                            			NO_WAIT,
                            			MSG_PRI_NORMAL )) == ERROR)
	   		 	{
	   		 		if(GE_MESSAGE_DEBUG)
               			 		GE_printf(GE_ALARM,"GE_cmdDispatch: sending SHUTDOWN to MAINCMD_TASK failed!\n");
               			 	free(pBuf);
                			return OK;
            		 	}
           			else
            			{
                			if(GE_MESSAGE_DEBUG)
                				GE_printf(GE_EVENT,"GE_CmdDispatch: sending SHUTDOWN to MAINCMD_TASK succeed!\n");
                			free(pBuf);
                			return OK;
                		}
			}
       			if (BOARD_STATE == BOARD_STATE_INITLIZE)     	
       			{
       				if(GE_MESSAGE_DEBUG)
       					GE_printf(GE_ALARM,"GE_CmdDispatch:Can't deal with in INITLIZE mode!\n");
       				free(pBuf);
                		return OK;
       			}
		break;
		 
		case  SYS_EVENT_REPORT:

			subType=GenMsg->data[0];
			TaskMsg.taskCode = BDCOM_TX_TASK_CODE;
             		TaskMsg.type = GenMsg->type;
             		TaskMsg.length = GenMsg->length;
             		memset(TaskMsg.msgBuf, 0, 128);
			if(subType!=REPORT_MAIN_BACKUP)
			{
				if(GE_MESSAGE_DEBUG)
					GE_printf(GE_ALARM,"GE_CmdDispatch:this message CANNOT be dealt here!\n");
				free(pBuf);
                		return OK;
			}
			else
			{
				if(msgQSend(	SBSL_TaskMsgIdGet(GE_MAINCMD_TASK_CODE), 
                            			(char *)(&TaskMsg),
                           			140, 
                            			NO_WAIT,
                            			MSG_PRI_NORMAL) == ERROR)
                            	{
                            		if(GE_MESSAGE_DEBUG)	
                            			GE_printf(GE_ALARM,"GE_cmdDispatch: sending REPORT_MAIN_BACKUP to MAIN COMMAND failed!\n");
               			 	free(pBuf);
                			return OK;
                            	}
                            	else 
                            	{
                            		if(GE_MESSAGE_DEBUG)
                            			GE_printf(GE_EVENT,"GE_cmdDispatch: sending REPORT_MAIN_BACKUP to MAIN COMMAND succeed!\n");
                            		free(pBuf);
                			return OK;
               			 	
                            	}
			}
		break;
		case  	RESET_COMMAND:

			TaskMsg.taskCode = BDCOM_TX_TASK_CODE;
             		TaskMsg.type = GenMsg->type;
             		TaskMsg.length = GenMsg->length;
             		memset(TaskMsg.msgBuf, 0, 128);

			if (BOARD_STATE == BOARD_STATE_NORMAL)
			{
           			 if ((msgQSend ( SBSL_TaskMsgIdGet(GE_MAINCMD_TASK_CODE), 
                            			(char *)(&TaskMsg),
                            			140, 
                           			 NO_WAIT,
                           			 MSG_PRI_NORMAL )) == ERROR)
	    			{
	    				if(GE_MESSAGE_DEBUG)
                				GE_printf(GE_ALARM,"GE_cmdDispatch: sending RESET_COMMAND to MainCommand failed!\n");
                		        free(pBuf);
                			return OK;
            			}
           			else
           			{
                			GE_printf(GE_EVENT,"GE_cmdDispatch: sending RESET_COMMAND to MainCommand succeed!\n");
                			free(pBuf);
                			return OK;
                			
            			}
			}
        		if (BOARD_STATE == BOARD_STATE_INITLIZE)     	
       			{
       				if(GE_MESSAGE_DEBUG)
          			 	GE_printf(GE_ALARM,"GE_cmdDispatch:in init state,SYS_INITCOMMAND message should be dealt by SBSL\n ");
          			 free(pBuf);
                		 return OK;
                   
                     	}
		break;
		
		case 	IP_PKT_DOWNRECEIVE:
		case 	MPLS_PKT_DOWNRECEIVE:

			if(GenMsg->data[0]!=GE_swiport)
			{
				free(pBuf);
				return OK;
			}

			TaskMsg.taskCode = BDCOM_TX_TASK_CODE;
             		TaskMsg.type = GenMsg->type;
             		TaskMsg.length = 8;
             		(ULONG)TaskMsg.msgBuf[0]=GenMsg->length;
             		*(ULONG*)&TaskMsg.msgBuf[4]=(ULONG)((ULONG*)&GenMsg->data[0]);
             		
			if (BOARD_STATE == BOARD_STATE_NORMAL)
			{
           		 	if ((msgQSend ( SBSL_TaskMsgIdGet(	GE_PROTO_SEND_TASK_CODE), 
                    							(char *)(&TaskMsg),
                    							140, 
                   			 				NO_WAIT,
                   			 				MSG_PRI_NORMAL )) == ERROR)
	    			{
	    				if(GE_MESSAGE_DEBUG)
                				GE_printf(GE_ALARM,"GE_cmdDispatch: sending IP/MPLS PKT to GE_PROTO_SEND_TASK failed!\n");
                			free(pBuf);
                			return OK;
            			}
           		 	else
           		 	{
     					if(GE_MESSAGE_DEBUG)           		
						GE_printf(GE_EVENT,"GE_cmdDispatch: sending IP/MPLS PKT to GE_PROTO_SEND_TASK succeed!\n");
                			return OK;
                			
            			}
			}
			if (BOARD_STATE == BOARD_STATE_INITLIZE)     	   
       			{
       				if(GE_MESSAGE_DEBUG)
          		 		GE_printf(GE_ALARM,"GE_cmdDispatch:in init state,IP PKT  should be dealt by SBSL\n ");
          		 	free(pBuf);
                		return OK;
                        }
		break;
		case	BDCOM_LINK_DOWN:

			TaskMsg.taskCode = BDCOM_TX_TASK_CODE;
             		TaskMsg.type = GenMsg->type;
             		TaskMsg.length = GenMsg->length;
             		memset(TaskMsg.msgBuf, 0, 128);
        	
			if (BOARD_STATE == BOARD_STATE_NORMAL)
			{
           		 	if ((msgQSend ( SBSL_TaskMsgIdGet(GE_MAINCMD_TASK_CODE), 
                    				(char *)(&TaskMsg),
                    				140, 
                   				 NO_WAIT,
                   			 	MSG_PRI_NORMAL )) == ERROR)
	    			{
	    				if(GE_MESSAGE_DEBUG)
                				GE_printf(GE_ALARM,"GE_cmdDispatch: sending RESET_COMMAND to MainCommand failed!\n");
                			return OK;
            			}
           			else
           			{
           				if(GE_MESSAGE_DEBUG)
                				GE_printf(GE_EVENT,"GE_cmdDispatch: sending RESET_COMMAND to MainCommand succeed!\n");
                			return OK;
                		}
			}
        		if (BOARD_STATE == BOARD_STATE_INITLIZE)     	
       			{
       				if(GE_MESSAGE_DEBUG)
          		 		GE_printf(GE_ALARM,"GE_cmdDispatch:in init state,SYS_INITCOMMAND message should be dealt by SBSL\n ");
                		return OK;
                        }
		break;
		default:
			GE_printf(GE_ALARM,"GE_cmdDispatch:receive UNKNOWN message type = %d!\n",GenMsg->type);
			free(pBuf);
        	break;
      	}
	return OK;
}
/*end of GE_CmdDispatch.c*/

⌨️ 快捷键说明

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