📄 swsys.c
字号:
//*** 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 + -