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

📄 snmp.c

📁 基于h323协议的软phone
💻 C
📖 第 1 页 / 共 3 页
字号:
    ii = (sizeof(mmRootId)/sizeof(int));
    node= ((h341AgentT *)hSnmp)->root;
    if (!((h341AgentT *)hSnmp)->instNum)
        return noRegisterInstance;

    for (;ii<oid->length;ii++)
    {
        subId = oid->id[ii];
        if ((int)node->childNum < subId)
            return noSuchField;

        if (node->table)
        {
            if (node->getH323Parameter!=NULL)
            {
                node->getH323Parameter(hSnmp,pduSetParam,oid,&ii,node,buffer,&error );
                return error;
            }

        }
        if(node->childNum==0)
            return noSuchField;
        children  = node->children;
        node = &children[subId-1];
    }
    if (node->getH323Parameter!=NULL)
    {

        node->getH323Parameter(hSnmp,pduSetParam,oid,&ii,node,buffer,&error );
        return error;
    }

    return 0;
}






mibNodeT *   mibCreateNode (mibNodeT * parent,int number,int childNumber,h341ParameterName name,
                            getH323ParameterT   getH323Parameter,RvBool table)
{
    mibNodeT *node;



    if((int)parent->childNum<number)
        return NULL;
    node = &parent->children[number-1];
    node->name=name;
    node->parent=parent;
    node->table=table;
    node->childNum=(RvUint8 )childNumber;
    if (!table)
    {
        RvMemoryAlloc(NULL, (void**)&node->children, childNumber*sizeof(mibNodeT));
        memset(node->children,0,childNumber * sizeof(mibNodeT));
    }
    node->getH323Parameter=getH323Parameter;
    return node;
}

mibNodeT *   mibCreateNodeL (mibNodeT * parent,int number,int childNumber,h341ParameterName name,
                            getH323ParameterT   getH323Parameter)
{
    mibNodeT *node;
    if((int)parent->childNum<number)
        return NULL;
    node = &parent->children[number-1];
    node->name=name;

    node->childNum=(RvUint8 )childNumber;
    RvMemoryAlloc(NULL, (void**)&node->children, childNumber*sizeof(mibNodeT));
    memset(node->children,0,childNumber * sizeof(mibNodeT));
    node->getH323Parameter=getH323Parameter;
    return node;
}


int translate(void)
{
    FILE * fp,*fp2;
    char sIn[200],sOut[200],*ptr,*b;
    fp = fopen("text.cpp","rb");
    fp2 = fopen("text1.cpp","w+b");
    if(fp==NULL)
        return -1;
    while(fgets(sIn,100,fp)!=NULL)
    {

        ptr = strchr(sIn,',');
        if(ptr!=NULL)
            *ptr=0;
        b=sIn;
        while((*b==' ')||(*b=='\t'))
            b++;
        if ((*b!=0)&&(*b!='\r') && (*b!='\n') )
        {
            RvSprintf(sOut," case %s:\n \treturn \"%s\";\n",b,b);
            fwrite(sOut,strlen(sOut),1,fp2);
        }
    }
    fclose(fp);
    fclose(fp2);
    return 0;

}

int createH320Mib(h341AgentT * hSnmp,mibNodeT * parent)
{
    mibNodeT *node;
    if (hSnmp);
    node = mibCreateNode(parent, 2,0, mmH320Root,getEventParameter,RV_FALSE);
    return 0;

}

int createH225Mib(h341AgentT * hSnmp,mibNodeT * parent)
{
    mibNodeT * node,*h225root,*hRASroot;

    if (hSnmp);

    node = mibCreateNode(parent, 1,2, mmH323Root,getParameter,RV_FALSE);

    h225root = mibCreateNode(node, 1,4, h225callSignaling,getParameter,RV_FALSE);
    hRASroot = mibCreateNode(node, 2,1, ras,getParameter,RV_FALSE);

    node = mibCreateNode(h225root, 1,1, callSignalConfig,getParameter,RV_FALSE);
    node = mibCreateNode(node, 1,1, callSignalConfigTable,getParameter,RV_FALSE);
    node = mibCreateNode(node, 1,5, callSignalConfigEntry,getTableParameter,RV_TRUE);

    node = mibCreateNode(h225root, 2,1, callSignalStats,getParameter,RV_FALSE);
    node = mibCreateNode(node, 1,1, callSignalStatsTable,getParameter,RV_FALSE);
    node = mibCreateNode(node, 1,25, callSignalStatsEntry,getTableParameter,RV_TRUE);

    node = mibCreateNode(h225root, 3,2, connections,getParameter,RV_FALSE);
    mibCreateNode(node, 1,0, connectionsActiveConnections,getGlobalParameter,RV_TRUE);
    node =   mibCreateNode(node, 2,1, connectionsTable,getParameter,RV_FALSE);
    node =   mibCreateNode(node, 1,32, connectionsTableEntry,getIndexTableParameter,RV_TRUE);

    node = mibCreateNode(h225root, 4,0, callSignalEvents,getEventParameter,RV_TRUE);

    node = mibCreateNode(hRASroot, 1,1,rasConfiguration,getParameter,RV_FALSE);
    node = mibCreateNode(node, 1,1,rasConfigurationTable,getParameter,RV_FALSE);
    node = mibCreateNode(node, 1,5,rasConfigurationTableEntry,getTableParameter,RV_TRUE);


    return 0;
}


int createH245Mib(h341AgentT * hSnmp,mibNodeT * parent)
{

    mibNodeT * id0;
    mibNodeT * id1;
    mibNodeT * id2;
    mibNodeT * id3;
    mibNodeT * id4;
    mibNodeT * id8;
    mibNodeT * id20;
    mibNodeT * id37;
    mibNodeT * id48;
    mibNodeT * id58;
    mibNodeT * id67;
    mibNodeT * id74;
    mibNodeT * id91;
    mibNodeT * id111;
    mibNodeT * node;
    mibNodeT *h245root;

    if (hSnmp);

    node = mibCreateNode(parent, 3,1, mmH245Root,getParameter,RV_FALSE);

    id0 = mibCreateNode(node, 1,/*6*/4, h245,getParameter,RV_FALSE);
    h245root = id0;

    id1 = mibCreateNode(id0, 1,1, h245Configuration,getParameter,RV_FALSE);
    id8 = mibCreateNode(id1, 1,1, h245ConfigurationTable,getParameter,RV_FALSE);
        mibCreateNode(id8, 1,10, h245ConfigurationTableEntry,getTableParameter,RV_TRUE);
    id2 = mibCreateNode(id0, 2,2, h245ControlChannel,getParameter,RV_FALSE);
    id20 = mibCreateNode(id2, 1,1, h245ControlChannelStatsTable,getParameter,RV_FALSE);
        mibCreateNode(id20, 1,15, h245ControlChannelStatsTableEntry,getTableParameter,RV_TRUE);
    id37 = mibCreateNode(id2, 2,1, h245ControlChannelMasterSlaveTable,getParameter,RV_FALSE);
        mibCreateNode(id37, 1,9, h245ControlChannelMasterSlaveTableEntry,getIndexTableParameter,RV_TRUE);
    id3 = mibCreateNode(id0, 3,2, h245CapExchange,getParameter,RV_FALSE);
    id48 = mibCreateNode(id3, 1,1, h245CapExchangeStatsTable,getParameter,RV_FALSE);
        mibCreateNode(id48, 1,8, h245CapExchangeStatsTableEntry,getTableParameter,RV_TRUE);
    id58 = mibCreateNode(id3, 2,1, h245CapExchangeCapabilityTable,getParameter,RV_FALSE);
        mibCreateNode(id58, 1,7, h245CapExchangeCapabilityTableEntry,getIndexTableParameter,RV_TRUE);
    id4 = mibCreateNode(id0, 4,4, h245LogChannels,getParameter,RV_FALSE);
    id67 = mibCreateNode(id4, 1,1, h245LogChannelsChannelTable,getParameter,RV_FALSE);
        mibCreateNode(id67, 1,5, h245LogChannelsChannelTableEntry,getIndexTableParameter,RV_TRUE);
    id74 = mibCreateNode(id4, 2,1, h245LogChannelsH225Table,getParameter,RV_FALSE);
        mibCreateNode(id74, 1,15, h245LogChannelsH225TableEntry,getIndexTableParameter,RV_TRUE);
    id91 = mibCreateNode(id4, 3,1, h245LogChannelOpenLogicalChannelTable,getParameter,RV_FALSE);
        mibCreateNode(id91, 1,18, h245LogChannelOpenLogicalChannelTableEntry,getTableParameter,RV_TRUE);
    id111 = mibCreateNode(id4, 4,1, h245LogChannelCloseLogicalChannelTable,getParameter,RV_FALSE);
        mibCreateNode(id111, 1,6, h245LogChannelCloseLogicalChannelTableEntry,getTableParameter,RV_TRUE);

/*
    conference and misk are not implemented, number of h245 subtree is 4 (for creating id0)
    id5 = mibCreateNode(id0, 5,2, h245Conference,getParameter,RV_FALSE);
    id138 = mibCreateNode(id5, 1,1, h245ConferenceTerminalTable,getParameter,RV_FALSE);
        mibCreateNode(id138, 1,6, h245ConferenceTerminalTableEntry,getIndexTableParameter,RV_TRUE);
    id146 = mibCreateNode(id5, 2,1, h245ConferenceStatsTable,getParameter,RV_FALSE);
        mibCreateNode(id146, 1,15, h245ConferenceStatsTableEntry,getTableParameter,RV_TRUE);
    id6 = mibCreateNode(id0, 6,2, h245Misc,getParameter,RV_FALSE);
    id119 = mibCreateNode(id6, 1,1, h245MiscRoundTripDelayTable,getParameter,RV_FALSE);
        mibCreateNode(id119, 1,6, h245MiscRoundTripDelayTableEntry,getIndexTableParameter,RV_TRUE);
    id127 = mibCreateNode(id6, 2,1, h245MiscMaintenanceLoopTable,getParameter,RV_FALSE);
        mibCreateNode(id127, 1,9, h245MiscMaintenanceLoopTableEntry,getIndexTableParameter,RV_TRUE);
*/
    return 0;
}


h341ErrorT  createMib(h341AgentT* hSnmp)
{
    mibNodeT    parent;

    parent.childNum=(RvUint8)1;

    RvMemoryAlloc(NULL, (void**)&parent.children, sizeof(mibNodeT));
    parent.parent=NULL;

    hSnmp->root =  mibCreateNode(&parent, 1,3, mmRoot,getParameter,RV_FALSE);
    hSnmp->root->parent=NULL;
    createH225Mib(hSnmp,hSnmp->root);
    createH245Mib(hSnmp,hSnmp->root);
    createH320Mib(hSnmp,hSnmp->root);
    return (h341ErrorT)0;
}

void destroyMib(mibNodeT * node)
{
    int ii;
    if (node !=NULL)
    {

        if (!node->table)
        {
            for (ii=0;ii<node->childNum;ii++)
                destroyMib( &(node->children[ii]));
        }
        RvMemoryFree(node);

    }


}


#ifdef CONSOLE

void testtable();

int main(int argc, char* argv[])
{


    mibNodeT    parent;
    fpDebug = fopen("dd.c","wb");

    parent.childNum=(RvUint8)1;

    RvMemoryAlloc(NULL, (void**)&parent->children, sizeof(mibNodeT));
    parent.parent=NULL;

    hSnmp.root =  mibCreateNode(&parent, 1,3, mmRoot,getParameter,RV_FALSE);
    createH225Mib(&hSnmp,hSnmp.root);
    createH245Mib(&hSnmp,hSnmp.root);
    createH320Mib(&hSnmp,hSnmp.root);

    dPrintMib(hSnmp.root,"0.0.341",2,1);
    testtable();

                {
                     int bufferSize = 1024;
                     snmpObjectT oidNext;
                     int idNext[30];
                     snmpObjectT oid;

                     int id[] = {0,0,8,341,1,1,1,1,1,2};
                     oidNext.id = idNext;
                     oidNext.length=30;
                     oid.id = id;
                     oid.length = sizeof(id)/sizeof(int);
                    getNext(&hSnmp,&oid,(char *)&oidNext,&bufferSize);
                    dPrintOid(&oidNext,"next oid = ");


                }


                {
                     int bufferSize = 1024;
                     snmpObjectT oidNext;
                     int idNext[30];
                     snmpObjectT oid;

                     int id[] = {0,0,8,341,1,1,1,3};
                     oidNext.id = idNext;
                     oidNext.length=30;
                     oid.id = id;
                     oid.length = sizeof(id)/sizeof(int);
                    getNext(&hSnmp,&oid,(char *)&oidNext,&bufferSize);
                    dPrintOid(&oidNext,"next oid = ");

                }

                 {
                     int bufferSize = 1024;
                     snmpObjectT oidNext;
                     snmpObjectT oid;
                     snmpObjectT pOid;
                     int pId[30];

                     int idNext[30];
                     int id[] = {0,0,8,341,1};
                     pOid.id=pId;
                     oidNext.id = idNext;
                     oidNext.length=30;
                     oid.id = id;
                     oid.length = sizeof(id)/sizeof(int);


                    memcpy(pOid.id,id,sizeof(id));
                    pOid.length = oid.length;
                    while (!getNext(&hSnmp,&pOid,(char *)&oidNext,&bufferSize))
                    {
                        dPrintOid(&oidNext,"next oid = ");
                        memcpy(pOid.id,oidNext.id,30*sizeof(int));
                        pOid.length = oidNext.length;
                        oidNext.length = 30;

                    }
                 }





    fclose(fpDebug);
    return 0;
}








#endif

#ifdef __cplusplus
}
#endif

⌨️ 快捷键说明

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