コード例 #1
0
void
AnscStr2Ip4Addr
    (
        PUCHAR                      pStr,
        PUCHAR                      pIp4Addr
    )
{
    if (pStr && pIp4Addr)
    {
        /* we don't valid the format of string format IP4 address */

        *(PULONG)pIp4Addr   = _ansc_inet_addr(pStr);
    }
}
コード例 #2
0
/**********************************************************************

    prototype:

        BOOL
        DslhVarroIsValidIpAddRangeList
            (
                PCHAR                       pAddRangeList
            );

    description:

        This function is called check if it's a valid IpAddress 
        range List;

    argument:   PCHAR                       pAddList
                The IpAddress List string seperated by ',';

    return:     TRUE or FALSE

**********************************************************************/
BOOL
DslhVarroIsValidIpAddRangeList
    (
        PCHAR                       pAddRangeList
    )
{
    PANSC_TOKEN_CHAIN               pAddrRangeTokenChain = (PANSC_TOKEN_CHAIN         )NULL;
    PANSC_TOKEN_CHAIN               pAddrTokenChain      = (PANSC_TOKEN_CHAIN         )NULL;
    PANSC_STRING_TOKEN              pAddrStringToken     = (PANSC_STRING_TOKEN        )NULL;
    PANSC_STRING_TOKEN              pAddrStringToken1    = (PANSC_STRING_TOKEN        )NULL;
    PANSC_STRING_TOKEN              pAddrStringToken2    = (PANSC_STRING_TOKEN        )NULL;
    BOOL                            bIsValid             = TRUE;
    ULONG                           i                    = 0;

    if( !pAddRangeList || AnscSizeOfString(pAddRangeList) == 0)
    {
        return bIsValid;
    }

    if ( DslhVarroDelSpaceInCommaSeparator((PCHAR)pAddRangeList) )
    {
        if ( (AnscSizeOfString(pAddRangeList) != 0) && (pAddrRangeTokenChain = AnscTcAllocate( pAddRangeList, "," )) )
        {
            while ( pAddrStringToken = AnscTcUnlinkToken(pAddrRangeTokenChain) )
            {
                if ( pAddrTokenChain = AnscTcAllocate(pAddrStringToken->Name, "-") )
                {

                    pAddrStringToken1 = AnscTcUnlinkToken(pAddrTokenChain);

                    if( ! AnscIsValidIpString((PCHAR)pAddrStringToken1->Name))
                    {
                        bIsValid = FALSE;

                        goto EXIT2;
                    }

                    pAddrStringToken2 = AnscTcUnlinkToken(pAddrTokenChain);

                    if( !pAddrStringToken2 || ! AnscIsValidIpString((PCHAR)pAddrStringToken2->Name))
                    {
                        bIsValid = FALSE;

                        goto EXIT3;
                    }

                    if ( _ansc_inet_addr(pAddrStringToken1->Name) > _ansc_inet_addr(pAddrStringToken2->Name) )
                    {
                        bIsValid = FALSE;

                        goto EXIT3;
                    }

                    AnscFreeMemory(pAddrStringToken2);
                    AnscFreeMemory(pAddrStringToken1);
                    AnscFreeMemory(pAddrStringToken);
                    AnscTcFree((ANSC_HANDLE)pAddrTokenChain);
                }
                else
                {
                    bIsValid = FALSE;

                    goto EXIT1;
                }
            }

            goto EXIT;
        }
        else
        {
            return bIsValid = FALSE;
        }
    }
    else
    {
        return bIsValid = FALSE;
    }

EXIT3:

    if ( pAddrStringToken2 )
    {
        AnscFreeMemory(pAddrStringToken2);
    }

EXIT2:
    
    if ( pAddrStringToken1 )
    {
        AnscFreeMemory(pAddrStringToken1);
    }

    if ( pAddrStringToken )
    {
        AnscFreeMemory(pAddrStringToken);
    }

EXIT1:

    if ( pAddrTokenChain )
    {
        AnscTcFree((ANSC_HANDLE)pAddrTokenChain);
    }

EXIT:

    if ( pAddrRangeTokenChain )
    {
        AnscTcFree((ANSC_HANDLE)pAddrRangeTokenChain);
    }

    return bIsValid;
}
コード例 #3
0
ANSC_STATUS
CcspCwmpTcpcrhoCreateTcpServers

    (
        ANSC_HANDLE                 hThisObject
    )
{
    ANSC_STATUS                     returnStatus  = ANSC_STATUS_SUCCESS;
    PCCSP_CWMP_TCPCR_HANDLER_OBJECT      pMyObject     = (PCCSP_CWMP_TCPCR_HANDLER_OBJECT    )hThisObject;
    PCCSP_CWMP_TCPCR_HANDLER_PROPERTY    pProperty     = (PCCSP_CWMP_TCPCR_HANDLER_PROPERTY  )&pMyObject->Property;
    PANSC_DAEMON_SERVER_TCP_OBJECT  pTcpServer    = (PANSC_DAEMON_SERVER_TCP_OBJECT)pMyObject->hTcpServer;
    char  buf[64]      = {0};

    if ( pProperty->HostPort == 0 && pTcpServer )
    {
        CcspTr069PaTraceDebug(("Port is 0 on current TcpServer: Server will be removed!!!\n"));
        pTcpServer->Remove((ANSC_HANDLE)pTcpServer);
        pMyObject->hTcpServer   = (ANSC_HANDLE)NULL;
    }
    else if ( !pTcpServer && pProperty->HostPort != 0 )
    {
        if ( bIsComcastImage() ) {

           // If HostAddress value is zero, then bind the outbound interface's ip address
           if( pProperty->HostAddress.Value == 0)
           {
              CcspTr069PaTraceInfo(("%s, HostAddress value is 0\n",__FUNCTION__));
              token_t  se_token;
              int      se_fd = s_sysevent_connect(&se_token);
              if (0 > se_fd) 
              {
                 CcspTr069PaTraceError(("%s, sysevent_connect failed!!!\n",__FUNCTION__));
                 //return ERR_SYSEVENT_CONN;
              }
              else
              {
                 // Get ipv4 address from sysevent
                 if( 0 == sysevent_get(se_fd, se_token, "ipv4_wan_ipaddr", buf, sizeof(buf)) && '\0' != buf[0] )
                 {
                    CcspTr069PaTraceInfo(("%s, ipv4_wan_ipaddr got from sysevent is: %s\n",__FUNCTION__,buf));
                    pProperty->HostAddress.Value = _ansc_inet_addr(buf);
                    CcspTr069PaTraceInfo(("%s,pProperty->HostAddress.Value: %lu\n",__FUNCTION__,pProperty->HostAddress.Value));
                 }
                 else
                 {
                  // If sysevent fails, let TR69 bind on 0.0.0.0
                  CcspTr069PaTraceError(("%s, sysevent_get failed to get value of ipv4_wan_ipaddr!!!\n",__FUNCTION__));
                 }
              }
           }
       
           CcspTr069PaTraceInfo(("%s, Call AnscCreateDaemonServerTcp\n",__FUNCTION__));
        }
        pTcpServer =
            (PANSC_DAEMON_SERVER_TCP_OBJECT)AnscCreateDaemonServerTcp
                (
                    pMyObject->hContainerContext,
                    (ANSC_HANDLE)pMyObject,
                    (ANSC_HANDLE)NULL
                );

        if ( !pTcpServer )
        {
            CcspTr069PaTraceError(("Something wrong in AnscCreateDaemonServerTCP.\n"));
            return  ANSC_STATUS_RESOURCES;
        }
        else
        {
            pMyObject->hTcpServer = (ANSC_HANDLE)pTcpServer;
        }

        pTcpServer->SetWorker
            (
                (ANSC_HANDLE)pTcpServer,
                pMyObject->hDstoWorker,
                sizeof(ANSC_DSTO_WORKER_OBJECT)
            );
    }

    CcspTr069PaTraceInfo(("TCP server created successfully.\n"));

    return  ANSC_STATUS_SUCCESS;
}