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

📄 cli_cmdpro.c

📁 可以作为路由器交换机设备的远端shell控制接口
💻 C
📖 第 1 页 / 共 5 页
字号:
	/*error msg*/
	if ( argc < 2)
	{
		cli_out_string (0, "\n\r error msg" ) ;
		return ;
	}

	/*get user index*/
	aos_atol(argv[0], (S32*)&ulIndex);

	/*get curent interface mode*/
	aos_strcpy(szIfName, argv[1]);

	if ( argc == 2 )
	{
        debug_show_info( argc, argv );
		return ;
	}
	else
	{
		cli_out_string (ulIndex, pTooManyParam ) ;
		return ;
	}

}
/*========================================================================*/
/*                                                                        */
/*    Function Name    : cli_cmd_set_timeout                              */
/*    Function Func.   : 设置telnet用户超时时长           				  */
/*========================================================================*/
VOID cli_cmd_set_timeout  ( U32 argc, S8 * argv[ ] )
{
	U32  ulIndex;
	U32  ulTimeOut;
	S32  lRet;

	/*error msg*/
	if ( argc < 2  )
	{
		cli_out_string (0, "\n\r error msg" ) ;
		return ;
	}

	/*get user index*/
	aos_atol(argv[0], (S32*)&ulIndex);

	if( 3 != argc )
	{
		cli_out_string( ulIndex, "\r\n Usage: user_timeout { minutes }");
		return;
	}
	lRet = aos_atoul( argv[2], &ulTimeOut );
	if( lRet != AOS_SUCC )
	{
		cli_out_string( ulIndex, "\r\n Usage: user_timeout { minutes }");
		return;

	}

	( (ulTimeOut == 0)||(  ulTimeOut > 30 ) ) ? ( ulTimeOut = 30 ) : ( ulTimeOut = ulTimeOut );

	g_ulTelnetTimeOut = ulTimeOut * 60 * 1000;

	return;



}

/*========================================================================*/
/*                                                                        */
/*    Function Name    : cfg_exit_cmdpro                                         */
/*    Function Func.   : change from config mode to privilege level       */
/*========================================================================*/

VOID cfg_exit_cmdpro ( U32 argc, S8 * argv[ ] )
{
	S8 szIfName[128] = "";
	U32 ulIndex = 0;

	/*error msg*/
	if ( argc < 2)
	{
		cli_out_string (0, "\n\r error msg" ) ;
		return ;
	}

	/*get user index*/
	aos_atol(argv[0], (S32*)&ulIndex);

	/*get curent interface mode*/
	aos_strcpy(szIfName, argv[1]);

	if ( argc == 2 )
	{
		cli_change_level (ulIndex, PRIVILEGE_LEVEL ) ;
		return ;
	}
	else
	{
		cli_out_string (ulIndex, pTooManyParam ) ;
		return ;
	}

}

/*========================================================================*/
/*                                                                        */
/*    Function Name    : ul_exit_cmdpro                                          */
/*    Function Func.   : Exit from configuration and disconnect           */
/*========================================================================*/
VOID cli_shutdown_user ( U32 argc, S8 * argv[ ] )
{
	U32 ulIndex = 0, ulDelIndex;
    S8 prompt[128];

	/*error msg*/

	if ( argc < 2)
	{
		cli_out_string (0, "\n\r error msg" ) ;
		return ;
	}

	/*get user index*/
	aos_atol(argv[0], (S32*)&ulIndex);

   	if ( argc == 2 ||  argc == 3 )
   	{
        /*如果是串口命令行是不会SHUTDOWN的*/
        if( argc == 2 )
        {
            ulDelIndex = ulIndex;
        }
        else
        {
        	/*get user index*/
        	if( aos_atol(argv[2], (S32*)&ulDelIndex) )
        	{
                cli_out_string( ulIndex, "user index error" );
                return;
        	}
        }
        aos_sprintf( prompt, "\r\nAre you sure to shutdown user %d ? (y/n):", ulDelIndex );
        cli_out_string( ulIndex,prompt );
        cli_get_string( ulIndex,prompt, 2 );
        if( 'Y' == prompt[0] || 'y' == prompt[0] )
        {
            aos_sprintf( prompt, "\r\nshutdown %d", ulDelIndex );

            cli_out_string( ulIndex, prompt );

    		cli_disconnect (ulDelIndex);
        }
   	}
	else
	{
		cli_out_string (ulIndex, pTooManyParam ) ;
	}

}

#if AOS_INCLUDE_INET_IFNET == TRUE

/*========================================================================*/
/*                                                                        */
/*    Function Name    : cfg_if_fe_cmdpro                                  */
/*    Function Func.   : change from config mode to config interface mode */
/*========================================================================*/

VOID cfg_if_fe_cmdpro ( U32 argc, S8 * argv[ ] )
{
	USER_DATA_S *pstUserData = NULL;
	S8 szIfName[128] = "";
	U32 ulIndex = 0;

	/*error msg*/
	if ( argc < 2)
	{
		cli_out_string (0, "\n\r error msg" ) ;
		return ;
	}

	/*get user index*/
	aos_atol(argv[0], (S32*)&ulIndex);

	/*get curent interface mode*/
	aos_strcpy(szIfName, argv[1]);

	if ( argc == 2 )
	{
		cli_out_string (ulIndex, pIncompleteCmd ) ;
		return ;
	}

	pstUserData = cli_get_userdata_by_index( ulIndex);
	if(NULL == pstUserData)
	{
		return;
	}


	if ( argc == 3 )
	{
		if ( ! aos_strcmp ( argv[2], "?" ) )
		{
			cli_out_string (ulIndex, "\n\r  <0/0/0>  Ethernet interface number" ) ;
			return ;
		}
		else
		{

#if CONFIG_BOARD_EIA
			aos_strcpy(szIfName, "Ethernet");
#else
			aos_strcpy(szIfName, "Fast-ethernet");
#endif
			aos_strcat(szIfName, argv[2]);
			if(NULL == if_get_if_by_full_name(szIfName))
			{
				cli_out_string (ulIndex, pIncorrectCmd ) ;
				return ;
			}
			else
			{
				cli_change_level(ulIndex,CONFIG_IF_ETHERNET);
				aos_strcpy(pstUserData->szName, szIfName);
			}
		}
	}
	else
	{
		cli_out_string (ulIndex, pTooManyParam ) ;
		return ;
	}

	return;
}


/*========================================================================*/
/*                                                                        */
/*    Function Name    : cfg_if_fe_exit_cmdpro                             */
/*    Function Func.   : change from config Interface mode to config mode */
/*========================================================================*/

VOID cfg_if_fe_exit_cmdpro ( U32 argc, S8 * argv[ ] )
{
	S8 szIfName[128] = "";
	U32 ulIndex = 0;

	/*error msg*/
	if ( argc < 2)
	{
		cli_out_string (0, "\n\r error msg" ) ;
		return ;
	}

	/*get user index*/
	aos_atol(argv[0], (S32*)&ulIndex);

	/*get curent interface mode*/
	aos_strcpy(szIfName, argv[1]);

	if ( argc == 2 )
	{
		cli_change_level (ulIndex, CONFIG_LEVEL ) ;
		return ;
	}
	else
	{
		cli_out_string (ulIndex, pTooManyParam ) ;
		return ;
	}
}

/*========================================================================*/
/*                                                                        */
/*    Function Name    : cfg_if_asyn_cmdpro                                    */
/*    Function Func.   : change from config mode to config interface mode */
/*========================================================================*/
VOID cfg_if_asyn_cmdpro ( U32 argc, S8 * argv[ ] )
{
	USER_DATA_S *pstUserData = NULL;
	S8 szIfName[128] = "";
	U32 ulIndex = 0;

	/*error msg*/
	if ( argc < 2)
	{
		cli_out_string (0, "\n\r error msg" ) ;
		return ;
	}

	/*get user index*/
	aos_atol(argv[0], (S32*)&ulIndex);

	/*get curent interface mode*/
	aos_strcpy(szIfName, argv[1]);

	if ( argc == 2 )
	{
		cli_out_string (ulIndex, pIncompleteCmd ) ;
		return ;
	}

	pstUserData = cli_get_userdata_by_index( ulIndex);
	if(NULL == pstUserData)
	{
		return;
	}
	if ( argc == 3 )
	{
		if ( ! aos_strcmp ( argv[2], "?" ) )
		{
			cli_out_string (ulIndex, "\n\r  <0/0/0>  asyn interface number" ) ;
			return ;
		}
		else
		{
			aos_strcpy(szIfName, "Async");
			aos_strcat(szIfName, argv[2]);
			if(NULL == if_get_if_by_full_name(szIfName))
			{
				cli_out_string (ulIndex, pIncorrectCmd ) ;
				return ;
			}
			else
			{
				cli_change_level(ulIndex,CONFIG_IF_ASYN);
				aos_strcpy(pstUserData->szName, szIfName);
			}

		}
	}
	else
	{
		cli_out_string (ulIndex, pTooManyParam ) ;
		return ;
	}
	return;
}

/*========================================================================*/
/*                                                                        */
/*    Function Name    : cfg_if_asyn_exit_cmdpro                               */
/*    Function Func.   : change from config Interface mode to config mode */
/*========================================================================*/

VOID cfg_if_asyn_exit_cmdpro ( U32 argc, S8 * argv[ ] )
{
	S8 szIfName[128] = "";
	U32 ulIndex = 0;

	/*error msg*/
	if ( argc < 2)
	{
		cli_out_string (0, "\n\r error msg" ) ;
		return ;
	}

	/*get user index*/
	aos_atol(argv[0], (S32*)&ulIndex);

	/*get curent interface mode*/
	aos_strcpy(szIfName, argv[1]);

	if ( argc == 2 )
	{
		cli_change_level (ulIndex, CONFIG_LEVEL ) ;
		return ;
	}
	else
	{
		cli_out_string (ulIndex, pTooManyParam ) ;
		return ;
	}

}
#endif

VOID cfg_ada_cmdpro ( U32 argc, S8 * argv[ ] )
{

   struct dbg_frame_s*   pstFrame;

   USER_DATA_S *pstUserData = NULL;
   S8 szMpeName[128] = "";
   U32 ulIndex = 0;
   MSG_S    stMsg;
   U32 ulProcessId;

    /*error msg*/
    if ( argc < 2)
    {
        /*----------------------------------------------------------------*/
        /* error message                                                  */
        /*----------------------------------------------------------------*/
        cli_out_string (0, "\n\r error msg" ) ;
        return ;
    }

    /*get user index*/
    aos_atol(argv[0], (S32*)&ulIndex);

    pstUserData = cli_get_userdata_by_index( ulIndex);
    if(NULL == pstUserData)
    {
          //AOS_ASSERT(0);

       return;
    }


    if(( argc == 3 )||( argc == 2 ))
    {
        if( argc == 2 )
        {
            ulProcessId = dev_get_local_processorid();
        }
        else
        {
            aos_atoul( argv[2], &ulProcessId );
        }
        pstFrame = aos_msg_alloc( MPE_CLI, sizeof( struct dbg_frame_s));
        if( NULL == pstFrame )
        {
            return;
        }
        szMpeName[0] = '\0';
        aos_sprintf( szMpeName, "%d", ulProcessId );

        cli_change_level(ulIndex,PRIVILEGE_ADA);
        aos_strcpy(pstUserData->szName, szMpeName);
        aos_memzero( pstFrame, sizeof( struct dbg_frame_s));

        /*填充DEBUG消息帧*/
        pstFrame->debuger_ip_addr = AOS_HTONL(ulIndex);
        pstFrame->cmd = DEBUG_SHAKEHAND;
        pstFrame->dstProcessorId = AOS_HTONL( ulProcessId );
        pstFrame->is_to_borad = TRANS_TO_BOARD;

        /*填充AOS消息头*/
        stMsg.dstMpe = MPE_DEBUG;
        stMsg.dstProcessorId = ulProcessId;
        stMsg.msgPrio = MSG_PRIO_NORMAL;
        stMsg.srcMpe = MPE_CLI;
        stMsg.srcProcessorId = dev_get_local_processorid();
        stMsg.pvMsgBuf = pstFrame;
        stMsg.ulSize = sizeof( struct dbg_frame_s );

        /*发送AOS消息*/
        aos_msg_send( &stMsg );
        return;
    }
    else
    {
        /*----------------------------------------------------------------*/
        /* error message                                                  */
        /*----------------------------------------------------------------*/
        cli_out_string (ulIndex, pTooManyParam ) ;
        return ;
    }

}
/*========================================================================*/
/*                                                                        */
/*    Function Name    : cfg_ada_exit_cmdpro                             */
/*    Function Func.   : change from config Interface mode to config mode */
/*========================================================================*/

VOID cfg_ada_exit_cmdpro ( U32 argc, S8 * argv[ ] )
{
    S8 szIfName[128] = "";
    U32 ulIndex = 0;
    struct dbg_frame_s*   pstFrame;
    MSG_S    stMsg;
    U32 ulDstProcessorID;

⌨️ 快捷键说明

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