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

📄 swsys.c

📁 vt6528芯片交换机API函数和文档运行程序
💻 C
📖 第 1 页 / 共 3 页
字号:


//*** ACL 1 ***//
    u8EntryIndex ++;
    u16ByteMsk = 0;
    //Set entry into TCAM  table
    STR_pvMemset(&STcamEntryBuf, 0 , sizeof(STcamEntry));

    // DMAC_TYPE == broadcast
    STcamEntryBuf.u8DmacType = 2;
    u16MskType |= MSK_DMAC_TYPE;

    //no matter Ipv4 or Non_ipv4 group,check this bit
    u16MskType |= MSK_IPV4;

    STcamEntryBuf.UCfg13B.au8AftSV[8] = byTmpType[0];
    STcamEntryBuf.UCfg13B.au8AftSV[9] = byTmpType[1];
    u16ByteMsk |= 0x0300;    //unmaked 8,9 octet after SMAC or VLAN-tag (0000 0011 0000 0000 b)

#if defined(__LITTLE_ENDIAN)
    // convert byte array 
    SWSRAM_vEndianConvert(&STcamEntryBuf.UCfg13B.au8AftSV[1],4);
    SWSRAM_vEndianConvert(&STcamEntryBuf.UCfg13B.au8AftSV[5],4);
    SWSRAM_vEndianConvert(&STcamEntryBuf.UCfg13B.au8AftSV[9],4);
#endif   

    // Insert entry into HW TCAM table
    SWTCAM_bInsEntry(u8EntryIndex, &STcamEntryBuf,FALSE);

    // Set entry into HW TCAM MASK table
    STR_pvMemset(&STcamEntryBuf, 0 , sizeof(STcamEntry));
    //UNMASK rules
    SWTCAM_vUnMskEntry(&STcamEntryBuf, FALSE, u16MskType, u16ByteMsk);
    STcamEntryBuf.UCfg13B.au8AftSV[0] = 0xFC;

#if defined(__LITTLE_ENDIAN)
    // convert byte array 
    SWSRAM_vEndianConvert(&STcamEntryBuf.UCfg13B.au8AftSV[1],4);
    SWSRAM_vEndianConvert(&STcamEntryBuf.UCfg13B.au8AftSV[5],4);
    SWSRAM_vEndianConvert(&STcamEntryBuf.UCfg13B.au8AftSV[9],4);
#endif  
    // Insert entry into HW TCAM MASK table
    SWTCAM_bInsEntry(u8EntryIndex, &STcamEntryBuf,TRUE);

    // Set entry into ACTION CODE table
    STR_pvMemset(&SL2ACEntryBuf, 0 , sizeof(SL2pACEntry));    
    SL2ACEntryBuf.bMirror = TRUE;
    
     // Insert entry into HW ACTION CODE table
    SWL2PAC_bInsEntry(u8EntryIndex, &SL2ACEntryBuf);


//*** ACL 2 ***//
    u8EntryIndex ++;
    u16ByteMsk = 0;
    //Set entry into TCAM  table
    STR_pvMemset(&STcamEntryBuf, 0 , sizeof(STcamEntry));

    // DMAC_TYPE == broadcast
    STcamEntryBuf.u8DmacType = 2;
    u16MskType |= MSK_DMAC_TYPE;

    //no matter Ipv4 or Non_ipv4 group,check this bit
    u16MskType |= MSK_IPV4;

    STcamEntryBuf.UCfg13B.au8AftSV[0] = 0x04;
    STcamEntryBuf.UCfg13B.au8AftSV[8] = byTmpType[0];
    STcamEntryBuf.UCfg13B.au8AftSV[9] = byTmpType[1];
    u16ByteMsk |= 0x0301;    //unmaked 1,8,9 octet after SMAC or VLAN-tag (0000 0011 0000 0001 b)

#if defined(__LITTLE_ENDIAN)
    // convert byte array 
    SWSRAM_vEndianConvert(&STcamEntryBuf.UCfg13B.au8AftSV[1],4);
    SWSRAM_vEndianConvert(&STcamEntryBuf.UCfg13B.au8AftSV[5],4);
    SWSRAM_vEndianConvert(&STcamEntryBuf.UCfg13B.au8AftSV[9],4);
#endif   

    // Insert entry into HW TCAM table
    SWTCAM_bInsEntry(u8EntryIndex, &STcamEntryBuf,FALSE);

    // Set entry into HW TCAM MASK table
    STR_pvMemset(&STcamEntryBuf, 0 , sizeof(STcamEntry));
    //UNMASK rules
    SWTCAM_vUnMskEntry(&STcamEntryBuf, FALSE, u16MskType, u16ByteMsk);

#if defined(__LITTLE_ENDIAN)
    // convert byte array 
    SWSRAM_vEndianConvert(&STcamEntryBuf.UCfg13B.au8AftSV[1],4);
    SWSRAM_vEndianConvert(&STcamEntryBuf.UCfg13B.au8AftSV[5],4);
    SWSRAM_vEndianConvert(&STcamEntryBuf.UCfg13B.au8AftSV[9],4);
#endif  
    // Insert entry into HW TCAM MASK table
    SWTCAM_bInsEntry(u8EntryIndex, &STcamEntryBuf,TRUE);

    // Set entry into ACTION CODE table
    STR_pvMemset(&SL2ACEntryBuf, 0 , sizeof(SL2pACEntry));    
    SL2ACEntryBuf.bMirror = TRUE;
    
     // Insert entry into HW ACTION CODE table
    SWL2PAC_bInsEntry(u8EntryIndex, &SL2ACEntryBuf);


//*** ACL 3 ***//
    u8EntryIndex ++;
    u16ByteMsk = 0;
    //Set entry into TCAM  table
    STR_pvMemset(&STcamEntryBuf, 0 , sizeof(STcamEntry));

    // DMAC_TYPE == broadcast
    STcamEntryBuf.u8DmacType = 2;
    u16MskType |= MSK_DMAC_TYPE;

    //no matter Ipv4 or Non_ipv4 group,check this bit
    u16MskType |= MSK_IPV4;

    STcamEntryBuf.UCfg13B.au8AftSV[0] = 0x05;
    STcamEntryBuf.UCfg13B.au8AftSV[8] = byTmpType[0];
    STcamEntryBuf.UCfg13B.au8AftSV[9] = byTmpType[1];
    u16ByteMsk |= 0x0301;    //unmaked 1,8,9 octet after SMAC or VLAN-tag (0000 0011 0000 0001 b)

#if defined(__LITTLE_ENDIAN)
    // convert byte array 
    SWSRAM_vEndianConvert(&STcamEntryBuf.UCfg13B.au8AftSV[1],4);
    SWSRAM_vEndianConvert(&STcamEntryBuf.UCfg13B.au8AftSV[5],4);
    SWSRAM_vEndianConvert(&STcamEntryBuf.UCfg13B.au8AftSV[9],4);
#endif   

    // Insert entry into HW TCAM table
    SWTCAM_bInsEntry(u8EntryIndex, &STcamEntryBuf,FALSE);

    // Set entry into HW TCAM MASK table
    STR_pvMemset(&STcamEntryBuf, 0 , sizeof(STcamEntry));
    //UNMASK rules
    SWTCAM_vUnMskEntry(&STcamEntryBuf, FALSE, u16MskType, u16ByteMsk);
    STcamEntryBuf.UCfg13B.au8AftSV[1] = 0x80;

#if defined(__LITTLE_ENDIAN)
    // convert byte array 
    SWSRAM_vEndianConvert(&STcamEntryBuf.UCfg13B.au8AftSV[1],4);
    SWSRAM_vEndianConvert(&STcamEntryBuf.UCfg13B.au8AftSV[5],4);
    SWSRAM_vEndianConvert(&STcamEntryBuf.UCfg13B.au8AftSV[9],4);
#endif  
    // Insert entry into HW TCAM MASK table
    SWTCAM_bInsEntry(u8EntryIndex, &STcamEntryBuf,TRUE);

    // Set entry into ACTION CODE table
    STR_pvMemset(&SL2ACEntryBuf, 0 , sizeof(SL2pACEntry));    
    SL2ACEntryBuf.bMirror = TRUE;
    
     // Insert entry into HW ACTION CODE table
    SWL2PAC_bInsEntry(u8EntryIndex, &SL2ACEntryBuf);


//*** ACL 4 ***//
    u8EntryIndex ++;
    u16ByteMsk = 0;
    //Set entry into TCAM  table
    STR_pvMemset(&STcamEntryBuf, 0 , sizeof(STcamEntry));

    // DMAC_TYPE == broadcast
    STcamEntryBuf.u8DmacType = 2;
    u16MskType |= MSK_DMAC_TYPE;

    //no matter Ipv4 or Non_ipv4 group,check this bit
    u16MskType |= MSK_IPV4;

    STcamEntryBuf.UCfg13B.au8AftSV[0] = 0x05;
    STcamEntryBuf.UCfg13B.au8AftSV[1] = 0x80;
    STcamEntryBuf.UCfg13B.au8AftSV[8] = byTmpType[0];
    STcamEntryBuf.UCfg13B.au8AftSV[9] = byTmpType[1];
    u16ByteMsk |= 0x0301;    //unmaked 1,8,9 octet after SMAC or VLAN-tag (0000 0011 0000 0001 b)

#if defined(__LITTLE_ENDIAN)
    // convert byte array 
    SWSRAM_vEndianConvert(&STcamEntryBuf.UCfg13B.au8AftSV[1],4);
    SWSRAM_vEndianConvert(&STcamEntryBuf.UCfg13B.au8AftSV[5],4);
    SWSRAM_vEndianConvert(&STcamEntryBuf.UCfg13B.au8AftSV[9],4);
#endif   

    // Insert entry into HW TCAM table
    SWTCAM_bInsEntry(u8EntryIndex, &STcamEntryBuf,FALSE);

    // Set entry into HW TCAM MASK table
    STR_pvMemset(&STcamEntryBuf, 0 , sizeof(STcamEntry));
    //UNMASK rules
    SWTCAM_vUnMskEntry(&STcamEntryBuf, FALSE, u16MskType, u16ByteMsk);
    STcamEntryBuf.UCfg13B.au8AftSV[1] = 0xC0;

#if defined(__LITTLE_ENDIAN)
    // convert byte array 
    SWSRAM_vEndianConvert(&STcamEntryBuf.UCfg13B.au8AftSV[1],4);
    SWSRAM_vEndianConvert(&STcamEntryBuf.UCfg13B.au8AftSV[5],4);
    SWSRAM_vEndianConvert(&STcamEntryBuf.UCfg13B.au8AftSV[9],4);
#endif  
    // Insert entry into HW TCAM MASK table
    SWTCAM_bInsEntry(u8EntryIndex, &STcamEntryBuf,TRUE);

    // Set entry into ACTION CODE table
    STR_pvMemset(&SL2ACEntryBuf, 0 , sizeof(SL2pACEntry));    
    SL2ACEntryBuf.bMirror = TRUE;
    
     // Insert entry into HW ACTION CODE table
    SWL2PAC_bInsEntry(u8EntryIndex, &SL2ACEntryBuf);


//*** ACL 5 ***//
    u8EntryIndex ++;
    u16ByteMsk = 0;
    //Set entry into TCAM  table
    STR_pvMemset(&STcamEntryBuf, 0 , sizeof(STcamEntry));

    // DMAC_TYPE == broadcast
    STcamEntryBuf.u8DmacType = 2;
    u16MskType |= MSK_DMAC_TYPE;

    //no matter Ipv4 or Non_ipv4 group,check this bit
    u16MskType |= MSK_IPV4;

    STcamEntryBuf.UCfg13B.au8AftSV[0] = 0x05;
    STcamEntryBuf.UCfg13B.au8AftSV[1] = 0xC0;
    STcamEntryBuf.UCfg13B.au8AftSV[8] = byTmpType[0];
    STcamEntryBuf.UCfg13B.au8AftSV[9] = byTmpType[1];
    u16ByteMsk |= 0x0301;    //unmaked 1,8,9 octet after SMAC or VLAN-tag (0000 0011 0000 0001 b)

#if defined(__LITTLE_ENDIAN)
    // convert byte array 
    SWSRAM_vEndianConvert(&STcamEntryBuf.UCfg13B.au8AftSV[1],4);
    SWSRAM_vEndianConvert(&STcamEntryBuf.UCfg13B.au8AftSV[5],4);
    SWSRAM_vEndianConvert(&STcamEntryBuf.UCfg13B.au8AftSV[9],4);
#endif   

    // Insert entry into HW TCAM table
    SWTCAM_bInsEntry(u8EntryIndex, &STcamEntryBuf,FALSE);

    // Set entry into HW TCAM MASK table
    STR_pvMemset(&STcamEntryBuf, 0 , sizeof(STcamEntry));
    //UNMASK rules
    SWTCAM_vUnMskEntry(&STcamEntryBuf, FALSE, u16MskType, u16ByteMsk);
    STcamEntryBuf.UCfg13B.au8AftSV[1] = 0xF0;

#if defined(__LITTLE_ENDIAN)
    // convert byte array 
    SWSRAM_vEndianConvert(&STcamEntryBuf.UCfg13B.au8AftSV[1],4);
    SWSRAM_vEndianConvert(&STcamEntryBuf.UCfg13B.au8AftSV[5],4);
    SWSRAM_vEndianConvert(&STcamEntryBuf.UCfg13B.au8AftSV[9],4);
#endif  
    // Insert entry into HW TCAM MASK table
    SWTCAM_bInsEntry(u8EntryIndex, &STcamEntryBuf,TRUE);

    // Set entry into ACTION CODE table
    STR_pvMemset(&SL2ACEntryBuf, 0 , sizeof(SL2pACEntry));    
    SL2ACEntryBuf.bMirror = TRUE;
    
     // Insert entry into HW ACTION CODE table
    SWL2PAC_bInsEntry(u8EntryIndex, &SL2ACEntryBuf);


//*** ACL 6 ***//
    u8EntryIndex ++;
    u16ByteMsk = 0;
    //Set entry into TCAM  table
    STR_pvMemset(&STcamEntryBuf, 0 , sizeof(STcamEntry));

    // DMAC_TYPE == broadcast
    STcamEntryBuf.u8DmacType = 2;
    u16MskType |= MSK_DMAC_TYPE;

    //no matter Ipv4 or Non_ipv4 group,check this bit
    u16MskType |= MSK_IPV4;

    STcamEntryBuf.UCfg13B.au8AftSV[0] = 0x05;
    STcamEntryBuf.UCfg13B.au8AftSV[1] = 0xD0;
    STcamEntryBuf.UCfg13B.au8AftSV[8] = byTmpType[0];
    STcamEntryBuf.UCfg13B.au8AftSV[9] = byTmpType[1];
    u16ByteMsk |= 0x0301;    //unmaked 1,8,9 octet after SMAC or VLAN-tag (0000 0011 0000 0001 b)

#if defined(__LITTLE_ENDIAN)
    // convert byte array 
    SWSRAM_vEndianConvert(&STcamEntryBuf.UCfg13B.au8AftSV[1],4);
    SWSRAM_vEndianConvert(&STcamEntryBuf.UCfg13B.au8AftSV[5],4);
    SWSRAM_vEndianConvert(&STcamEntryBuf.UCfg13B.au8AftSV[9],4);
#endif   

    // Insert entry into HW TCAM table
    SWTCAM_bInsEntry(u8EntryIndex, &STcamEntryBuf,FALSE);

    // Set entry into HW TCAM MASK table
    STR_pvMemset(&STcamEntryBuf, 0 , sizeof(STcamEntry));
    //UNMASK rules
    SWTCAM_vUnMskEntry(&STcamEntryBuf, FALSE, u16MskType, u16ByteMsk);
    STcamEntryBuf.UCfg13B.au8AftSV[1] = 0xF8;

#if defined(__LITTLE_ENDIAN)
    // convert byte array 
    SWSRAM_vEndianConvert(&STcamEntryBuf.UCfg13B.au8AftSV[1],4);
    SWSRAM_vEndianConvert(&STcamEntryBuf.UCfg13B.au8AftSV[5],4);
    SWSRAM_vEndianConvert(&STcamEntryBuf.UCfg13B.au8AftSV[9],4);
#endif  
    // Insert entry into HW TCAM MASK table
    SWTCAM_bInsEntry(u8EntryIndex, &STcamEntryBuf,TRUE);

    // Set entry into ACTION CODE table
    STR_pvMemset(&SL2ACEntryBuf, 0 , sizeof(SL2pACEntry));    
    SL2ACEntryBuf.bMirror = TRUE;
    
     // Insert entry into HW ACTION CODE table
    SWL2PAC_bInsEntry(u8EntryIndex, &SL2ACEntryBuf);


//*** ACL 7 ***//
    u8EntryIndex ++;
    u16ByteMsk = 0;
    //Set entry into TCAM  table
    STR_pvMemset(&STcamEntryBuf, 0 , sizeof(STcamEntry));

    // DMAC_TYPE == broadcast
    STcamEntryBuf.u8DmacType = 2;
    u16MskType |= MSK_DMAC_TYPE;

    //no matter Ipv4 or Non_ipv4 group,check this bit
    u16MskType |= MSK_IPV4;

    STcamEntryBuf.UCfg13B.au8AftSV[0] = 0x05;
    STcamEntryBuf.UCfg13B.au8AftSV[1] = 0xD8;
    STcamEntryBuf.UCfg13B.au8AftSV[8] = byTmpType[0];
    STcamEntryBuf.UCfg13B.au8AftSV[9] = byTmpType[1];
    u16ByteMsk |= 0x0301;    //unmaked 1,8,9 octet after SMAC or VLAN-tag (0000 0011 0000 0001 b)

#if defined(__LITTLE_ENDIAN)
    // convert byte array 
    SWSRAM_vEndianConvert(&STcamEntryBuf.UCfg13B.au8AftSV[1],4);
    SWSRAM_vEndianConvert(&STcamEntryBuf.UCfg13B.au8AftSV[5],4);
    SWSRAM_vEndianConvert(&STcamEntryBuf.UCfg13B.au8AftSV[9],4);
#endif   

    // Insert entry into HW TCAM table
    SWTCAM_bInsEntry(u8EntryIndex, &STcamEntryBuf,FALSE);

    // Set entry into HW TCAM MASK table
    STR_pvMemset(&STcamEntryBuf, 0 , sizeof(STcamEntry));
    //UNMASK rules
    SWTCAM_vUnMskEntry(&STcamEntryBuf, FALSE, u16MskType, u16ByteMsk);
    STcamEntryBuf.UCfg13B.au8AftSV[1] = 0xFC;

#if defined(__LITTLE_ENDIAN)
    // convert byte array 
    SWSRAM_vEndianConvert(&STcamEntryBuf.UCfg13B.au8AftSV[1],4);
    SWSRAM_vEndianConvert(&STcamEntryBuf.UCfg13B.au8AftSV[5],4);
    SWSRAM_vEndianConvert(&STcamEntryBuf.UCfg13B.au8AftSV[9],4);
#endif  
    // Insert entry into HW TCAM MASK table
    SWTCAM_bInsEntry(u8EntryIndex, &STcamEntryBuf,TRUE);

    // Set entry into ACTION CODE table
    STR_pvMemset(&SL2ACEntryBuf, 0 , sizeof(SL2pACEntry));    
    SL2ACEntryBuf.bMirror = TRUE;
    
     // Insert entry into HW ACTION CODE table
    SWL2PAC_bInsEntry(u8EntryIndex, &SL2ACEntryBuf);


//*** ACL 8 ***//
    u8EntryIndex ++;
    u16ByteMsk = 0;
    //Set entry into TCAM  table
    STR_pvMemset(&STcamEntryBuf, 0 , sizeof(STcamEntry));

    // DMAC_TYPE == broadcast
    STcamEntryBuf.u8DmacType = 2;
    u16MskType |= MSK_DMAC_TYPE;

    //no matter Ipv4 or Non_ipv4 group,check this bit
    u16MskType |= MSK_IPV4;

    STcamEntryBuf.UCfg13B.au8AftSV[0] = 0x05;
    STcamEntryBuf.UCfg13B.au8AftSV[1] = 0xDC;
    STcamEntryBuf.UCfg13B.au8AftSV[8] = byTmpType[0];
    STcamEntryBuf.UCfg13B.au8AftSV[9] = byTmpType[1];
    u16ByteMsk |= 0x0303;    //unmaked 1,2,8,9 octet after SMAC or VLAN-tag (0000 0011 0000 0011 b)

#if defined(__LITTLE_ENDIAN)
    // convert byte array 
    SWSRAM_vEndianConvert(&STcamEntryBuf.UCfg13B.au8AftSV[1],4);
    SWSRAM_vEndianConvert(&STcamEntryBuf.UCfg13B.au8AftSV[5],4);
    SWSRAM_vEndianConvert(&STcamEntryBuf.UCfg13B.au8AftSV[9],4);
#endif   

    // Insert entry into HW TCAM table
    SWTCAM_bInsEntry(u8EntryIndex, &STcamEntryBuf,FALSE);

    // Set entry into HW TCAM MASK table
    STR_pvMemset(&STcamEntryBuf, 0 , sizeof(STcamEntry));
    //UNMASK rules
    SWTCAM_vUnMskEntry(&STcamEntryBuf, FALSE, u16MskType, u16ByteMsk);

#if defined(__LITTLE_ENDIAN)
    // convert byte array 
    SWSRAM_vEndianConvert(&STcamEntryBuf.UCfg13B.au8AftSV[1],4);
    SWSRAM_vEndianConvert(&STcamEntryBuf.UCfg13B.au8AftSV[5],4);
    SWSRAM_vEndianConvert(&STcamEntryBuf.UCfg13B.au8AftSV[9],4);
#endif  
    // Insert entry into HW TCAM MASK table
    SWTCAM_bInsEntry(u8EntryIndex, &STcamEntryBuf,TRUE);

    // Set entry into ACTION CODE table
    STR_pvMemset(&SL2ACEntryBuf, 0 , sizeof(SL2pACEntry));    
    SL2ACEntryBuf.bMirror = TRUE;
    
     // Insert entry into HW ACTION CODE table
    SWL2PAC_bInsEntry(u8EntryIndex, &SL2ACEntryBuf);

}

⌨️ 快捷键说明

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