30 #define MAX_TLV_PN_INFO_LEN 18
31 #define MAX_TLV_8023_INFO_LEN 18
34 #define MAX_TLV_INFO_LEN 512
36 typedef struct _REMOTE_ORG_8023_TLV{
37 APP_BYTE byRemSystemIndex;
38 APP_BYTE by8023TlvSubType;
39 APP_BYTE s8023TlvInfo[MAX_TLV_8023_INFO_LEN];
41 APP_BOOL bUsedNotUsed;
42 }ST_REMOTE_ORG_8023_TLV, APP_FAR *LPST_REMOTE_ORG_8023_TLV;
46 typedef struct _REMOTE_ORG_PN_TLV{
47 APP_BYTE byRemSystemIndex;
48 APP_BYTE byPNTlvSubType;
49 APP_BYTE sPNTlvInfo[MAX_TLV_PN_INFO_LEN];
51 APP_BOOL bUsedNotUsed;
52 }ST_REMOTE_ORG_PN_TLV, APP_FAR *LPST_REMOTE_ORG_PN_TLV;
54 typedef struct _REMOTE_UNKNOWN_TLV{
55 APP_BYTE byRemSystemIndex;
56 APP_BYTE byUnknownTlvType;
57 APP_WORD wUnknownTlvLength;
58 APP_BYTE sUnknownTlvInfo[MAX_TLV_INFO_LEN];
59 APP_BOOL bUsedNotUsed;
61 }ST_REMOTE_UNKNOWN_TLV, APP_FAR * LPST_REMOTE_UNKNOWN_TLV;
64 typedef struct _REMOTE_ORG_UNKNOWN_TLV{
65 APP_BYTE byRemSystemIndex;
66 APP_BYTE byUnknownTlvType;
67 APP_WORD wUnknownTlvLength;
68 APP_BYTE sUnknownTlvInfo[MAX_TLV_INFO_LEN];
69 APP_BOOL bUsedNotUsed;
70 APP_BYTE byOrganization;
71 }ST_REMOTE_ORG_UNKNOWN_TLV, APP_FAR * LPST_REMOTE_ORG_UNKNOWN_TLV;
74 typedef struct _REMOTE_SYS_DATA{
76 APP_BYTE byRemLocalPortNum;
77 APP_BYTE byRemChassisIdSubType;
78 APP_BYTE sRemChassisID[LLDP_CHASSIS_ID_LEN_MAX];
79 APP_BYTE byChassisIDLen;
80 APP_BYTE byRemPortIdSubType;
81 APP_BYTE sRemPortId[LLDP_PORT_ID_LEN_MAX];
87 ST_REMOTE_UNKNOWN_TLV RemSysUnknownTlv[MAX_UNKNOWN_TLV_PER_LLDPDU];
88 ST_REMOTE_ORG_UNKNOWN_TLV RemSysOrgUnknownTlv[MAX_UNKNOWN_TLV_PER_LLDPDU];
90 #ifdef LLDP_SUPPORT_PN
91 ST_REMOTE_ORG_PN_TLV RemSysPnTlv[MAX_PN_TLV_PER_LLDPDU];
94 #ifdef LLDP_SUPPORT_8023
95 ST_REMOTE_ORG_8023_TLV RemSys8023Tlv[MAX_8023_TLV_PER_LLDPDU];
98 #ifdef LLDP_STD_DESC_SUPPORT
99 APP_BYTE sPortDesc[LLDP_PORT_DESC_LEN_MAX];
100 APP_BYTE sRemSysName[LLDP_SYS_NAME_LEN_MAX];
101 APP_BYTE sRemSysDesc[LLDP_SYS_DESC_LEN_MAX];
103 APP_WORD wRemSysEnCap;
105 APP_BOOL bUsedNotUsed;
107 APP_DWORD dwTimeMarkLastChange;
109 }ST_REMOTE_SYS_DATA, APP_FAR * LPST_REMOTE_SYS_DATA;
113 typedef struct _MSAP {
119 APP_BYTE sMSAPID[LLDP_CHASSIS_ID_LEN_MAX+LLDP_PORT_DESC_LEN_MAX];
125 APP_BYTE byLocalPort;
127 LPST_REMOTE_SYS_DATA lpsrRemoteSysData;
129 }ST_MSAP, APP_FAR * LPST_MSAP;
131 #define GET_MSAP_USED(a) a->bMsapUsed
132 #define SET_MSAP_USED(a, b) a->bMsapUsed = b
134 #define GET_MSAP_LOCAL_PORT(a) a->byLocalPort
135 #define GET_MSAP_REM_SYS_DATA(a) a->lpsrRemoteSysData
137 #define GET_MSAP_RXINFO_TTL(a) a->wRxInfoTTL
138 #define SET_MSAP_RXINFO_TTL(a, b) a->wRxInfoTTL = b
140 #define GET_SYS_DATA_USED(a) a->lpsrRemoteSysData->bUsedNotUsed
141 #define SET_SYS_DATA_USED(a,b) a->lpsrRemoteSysData->bUsedNotUsed = b
143 #define GET_SYS_DATA_REMINDEX(a) a->byRemIndex
144 #define SET_SYS_DATA_REMINDEX(a,b) a->byRemIndex = b
146 #define GET_SYS_DATA_REMLOCALPORT(a) a->lpsrRemoteSysData->byRemLocalPortNum
147 #define SET_SYS_DATA_REMLOCALPORT(a,b) a->lpsrRemoteSysData->byRemLocalPortNum = b
149 #define GET_SYS_DATA_REMCHASSISIDSUBTYPE(a) a->lpsrRemoteSysData->byRemChassisIdSubType
150 #define SET_SYS_DATA_REMCHASSISIDSUBTYPE(a,b) a->lpsrRemoteSysData->byRemChassisIdSubType = b
152 #define GET_SYS_DATA_REMPORTIDSUBTYPE(a) a->lpsrRemoteSysData->byRemPortIdSubType
153 #define SET_SYS_DATA_REMPORTIDSUBTYPE(a,b) a->lpsrRemoteSysData->byRemPortIdSubType = b
155 #define SET_SYS_DATA_TIME_MARK(a, b) a->lpsrRemoteSysData->dwTimeMarkLastChange = b
156 #define GET_SYS_DATA_TIME_MARK(a) a->lpsrRemoteSysData->dwTimeMarkLastChange
158 #define GET_SYS_DATA_REMCHASSISID(a) a->lpsrRemoteSysData->sRemChassisID
159 #define SET_SYS_DATA_REMCHASSISID(a, b) a->lpsrRemoteSysData->sRemChassisID = b
160 #define GET_SYS_DATA_REMCHASSISIDLEN(a) a->lpsrRemoteSysData->byChassisIDLen
161 #define SET_SYS_DATA_REMCHASSISIDLEN(a, b) a->lpsrRemoteSysData->byChassisIDLen = b
163 #define GET_SYS_DATA_REMPORTID(a) a->lpsrRemoteSysData->sRemPortId
164 #define SET_SYS_DATA_REMPORTID(a,b) a->lpsrRemoteSysData->sRemPortId = b
165 #define GET_SYS_DATA_REMPORTIDLEN(a) a->lpsrRemoteSysData->byPortIdLen
166 #define SET_SYS_DATA_REMPORTIDLEN(a,b) a->lpsrRemoteSysData->byPortIdLen = b
168 #define GET_SYS_DATA_REMPORTDESC(a) a->lpsrRemoteSysData->sPortDesc
169 #define GET_SYS_DATA_REMSYSNAME(a) a->lpsrRemoteSysData->sRemSysName
170 #define GET_SYS_DATA_REMSYSDESC(a) a->lpsrRemoteSysData->sRemSysDesc
172 #define GET_SYS_DATA_REMSYSCAP(a) a->lpsrRemoteSysData->wRemSysCap
173 #define SET_SYS_DATA_REMSYSCAP(a, b) a->lpsrRemoteSysData->wRemSysCap = b
175 #define GET_SYS_DATA_REMSYSENCAP(a) a->lpsrRemoteSysData->wRemSysEnCap
176 #define SET_SYS_DATA_REMSYSENCAP(a, b) a->lpsrRemoteSysData->wRemSysEnCap = b
179 #define GET_SYS_DATA_REMADDRMGT_SUBTYPE(a) a->lpsrRemoteSysData->StRemMgtAddr[0].byMgtAddrSubType
180 #define SET_SYS_DATA_REMADDRMGT_SUBTYPE(a, b) a->lpsrRemoteSysData->StRemMgtAddr[0].byMgtAddrSubType = b
182 #define GET_SYS_DATA_REMADDRMGT_SUBTYPE_LEN(a) a->lpsrRemoteSysData->StRemMgtAddr[0].byMgtAddrSubTypeLen
183 #define SET_SYS_DATA_REMADDRMGT_SUBTYPE_LEN(a, b) a->lpsrRemoteSysData->StRemMgtAddr[0].byMgtAddrSubTypeLen = b
185 #define GET_SYS_DATA_REMADDRMGT_ADDR(a) (a)->lpsrRemoteSysData->StRemMgtAddr[0].byMgtAddr
186 #define SET_SYS_DATA_REMADDRMGT_ADDR(a, b) OS_MEMCOPY( ((a)->lpsrRemoteSysData->StRemMgtAddr[0].byMgtAddr), b, TLV_MANAGEMENT_ADDR_LEN)
188 #define GET_SYS_DATA_REMADDRMGT_IFSUBTYPE(a) a->lpsrRemoteSysData->StRemMgtAddr[0].byMgtAddrItfSubType
189 #define SET_SYS_DATA_REMADDRMGT_IFSUBTYPE(a, b) a->lpsrRemoteSysData->StRemMgtAddr[0].byMgtAddrItfSubType = b
192 #define GET_SYS_DATA_REMADDRMGT_IFNUMBER(a) a->lpsrRemoteSysData->StRemMgtAddr[0].dwMgtAddrItfNumber
193 #define SET_SYS_DATA_REMADDRMGT_IFNUMBER(a, b) a->lpsrRemoteSysData->StRemMgtAddr[0].dwMgtAddrItfNumber = b
196 #define GET_SYS_DATA_REMADDRMGT_OIDLEN(a) a->lpsrRemoteSysData->StRemMgtAddr[0].byMgtAddrOidLength
197 #define SET_SYS_DATA_REMADDRMGT_OIDLEN(a, b) a->lpsrRemoteSysData->StRemMgtAddr[0].byMgtAddrOidLength = b
199 #define GET_SYS_DATA_REMADDRMGT_OID(a) a->lpsrRemoteSysData->StRemMgtAddr[0].sMgtAddrOid
201 #define GET_SYS_DATA_REMADDR_COUNT(a) a->lpsrRemoteSysData->byNbMgtAddr
202 #define SET_SYS_DATA_REMADDR_COUNT(a, b) a->lpsrRemoteSysData->byNbMgtAddr = b
205 #define GET_UNKOWN_TLV_REM_USED(a,b) a->lpsrRemoteSysData->RemSysUnknownTlv[b].bUsedNotUsed
206 #define SET_UNKOWN_TLV_REM_USED(a,b,c) a->lpsrRemoteSysData->RemSysUnknownTlv[b].bUsedNotUsed = c
209 #define GET_UNKOWN_TLV_REM_SYSINDEX(a,b) a->lpsrRemoteSysData->RemSysUnknownTlv[b].byRemSystemIndex
210 #define SET_UNKOWN_TLV_REM_SYSINDEX(a,b,c) a->lpsrRemoteSysData->RemSysUnknownTlv[b].byRemSystemIndex = c
212 #define GET_UNKOWN_TLV_REM_TLVTYPE(a,b) a->lpsrRemoteSysData->RemSysUnknownTlv[b].byUnknownTlvType
213 #define SET_UNKOWN_TLV_REM_TLVTYPE(a,b,c) a->lpsrRemoteSysData->RemSysUnknownTlv[b].byUnknownTlvType = c
215 #define GET_UNKOWN_TLV_REM_TLVLENGTH(a,b) a->lpsrRemoteSysData->RemSysUnknownTlv[b].wUnknownTlvLength
216 #define SET_UNKOWN_TLV_REM_TLVLENGTH(a,b,c) a->lpsrRemoteSysData->RemSysUnknownTlv[b].wUnknownTlvLength = c
218 #define GET_UNKOWN_TLV_REM_TLVINFO(a,b) a->lpsrRemoteSysData->RemSysUnknownTlv[b].sUnknownTlvInfo
221 #define SET_REM_ORG_UNKNOWN_TLV_USED(a, b, c) a->lpsrRemoteSysData->RemSysOrgUnknownTlv[b].bUsedNotUsed = c
222 #define GET_REM_ORG_UNKNOWN_TLV_USED(a, b) a->lpsrRemoteSysData->RemSysOrgUnknownTlv[b].bUsedNotUsed
224 #define SET_REM_ORG_UNKNOWN_TLV_REM_INDEX(a, b, c) a->lpsrRemoteSysData->RemSysOrgUnknownTlv[b].byRemSystemIndex = c
225 #define GET_REM_ORG_UNKNOWN_TLV_REM_INDEX(a, b) a->lpsrRemoteSysData->RemSysOrgUnknownTlv[b].byRemSystemIndex
227 #define SET_REM_ORG_UNKNOWN_TLV_ORGANIZATION(a ,b, c) a->lpsrRemoteSysData->RemSysOrgUnknownTlv[b].byOrganization = c
228 #define GET_REM_ORG_UNKNOWN_TLV_ORGANIZATION(a ,b) a->lpsrRemoteSysData->RemSysOrgUnknownTlv[b].byOrganization
230 #define SET_REM_ORG_UNKNOWN_TLV_SUBTYPE(a, b, c) a->lpsrRemoteSysData->RemSysOrgUnknownTlv[b].byUnknownTlvType = c
231 #define GET_REM_ORG_UNKNOWN_TLV_SUBTYPE(a, b) a->lpsrRemoteSysData->RemSysOrgUnknownTlv[b].byUnknownTlvType
233 #define SET_REM_ORG_UNKNOWN_TLV_LENGTH(a ,b, c) a->lpsrRemoteSysData->RemSysOrgUnknownTlv[b].wUnknownTlvLength = c
234 #define GET_REM_ORG_UNKNOWN_TLV_LENGTH(a ,b) a->lpsrRemoteSysData->RemSysOrgUnknownTlv[b].wUnknownTlvLength
236 #define GET_REM_ORG_UNKNOWN_TLV_INFO(a ,b) a->lpsrRemoteSysData->RemSysOrgUnknownTlv[b].sUnknownTlvInfo
237 #define GET_REM_ORG_UNKNOWN_TLV(a, b) a->lpsrRemoteSysData->RemSysOrgUnknownTlv[b]
242 #define SET_REM_ORG_PN_TLV_USED(a, b, c) a->lpsrRemoteSysData->RemSysPnTlv[b].bUsedNotUsed = c
243 #define GET_REM_ORG_PN_TLV_USED(a, b) a->lpsrRemoteSysData->RemSysPnTlv[b].bUsedNotUsed
245 #define SET_REM_ORG_PN_TLV_REM_INDEX(a, b, c) a->lpsrRemoteSysData->RemSysPnTlv[b].byRemSystemIndex = c
246 #define GET_REM_ORG_PN_TLV_REM_INDEX(a, b) a->lpsrRemoteSysData->RemSysPnTlv[b].byRemSystemIndex
248 #define SET_REM_ORG_PN_TLV_SUBTYPE(a, b, c) a->lpsrRemoteSysData->RemSysPnTlv[b].byPNTlvSubType = c
249 #define GET_REM_ORG_PN_TLV_SUBTYPE(a, b) a->lpsrRemoteSysData->RemSysPnTlv[b].byPNTlvSubType
251 #define GET_REM_ORG_PN_TLV_INFO(a ,b) a->lpsrRemoteSysData->RemSysPnTlv[b].sPNTlvInfo
258 #define SET_REM_ORG_8023_TLV_USED(a, b, c) a->lpsrRemoteSysData->RemSys8023Tlv[b].bUsedNotUsed = c
259 #define GET_REM_ORG_8023_TLV_USED(a, b) a->lpsrRemoteSysData->RemSys8023Tlv[b].bUsedNotUsed
261 #define SET_REM_ORG_8023_TLV_REM_INDEX(a, b, c) a->lpsrRemoteSysData->RemSys8023Tlv[b].byRemSystemIndex = c
262 #define GET_REM_ORG_8023_TLV_REM_INDEX(a, b) a->lpsrRemoteSysData->RemSys8023Tlv[b].byRemSystemIndex
264 #define SET_REM_ORG_8023_TLV_SUBTYPE(a, b, c) a->lpsrRemoteSysData->RemSys8023Tlv[b].by8023TlvSubType = c
265 #define GET_REM_ORG_8023_TLV_SUBTYPE(a, b) a->lpsrRemoteSysData->RemSys8023Tlv[b].by8023TlvSubType
267 #define GET_REM_ORG_8023_TLV_INFO(a ,b) a->lpsrRemoteSysData->RemSys8023Tlv[b].s8023TlvInfo
270 #define LLDP_TABLE_FULL 3
273 APP_WORD CheckDiffRemSys(LPST_MSAP lpstMsapId,
LPST_LLDP_PORT lpPort);
275 APP_WORD IsMsapPresent(APP_LPBYTE sMSAPID, APP_WORD wMsapLen, APP_BYTE byLocalPortIndex, LPST_MSAP *lpstMsapid);
276 APP_WORD CreateMsap(APP_LPBYTE sMSAPID, APP_WORD wMsapLen, APP_WORD wTTL, APP_BYTE byLocalPortIndex, LPST_MSAP *lpstMsapid);
278 APP_WORD CheckReceivedTlvValues(
LPST_LLDP_PORT lpPort, LPST_LLDP_TLV lpstLldpTlv, LPST_MSAP lpstMsapId);
279 APP_WORD IsRecognizedTlvType(LPST_LLDP_TLV lpstLldpTlv);
280 APP_VOID DecMsapTTL();
281 APP_VOID SearchRxinfoTTLNULL(APP_BYTE byLocalPortIndex, LPST_MSAP *lpstMsapid);
283 APP_WORD InitializeTLVValueChecker();
284 APP_WORD Check_End_Of_LLDPDU_TLV(
LPST_LLDP_PORT lpPort, LPST_LLDP_TLV lpstLldpTlv, LPST_MSAP lpstMsapId);
285 APP_WORD Check_Chassis_Id_TLV(
LPST_LLDP_PORT lpPort, LPST_LLDP_TLV lpstLldpTlv, LPST_MSAP lpstMsapId);
286 APP_WORD Check_Port_Id_TLV(
LPST_LLDP_PORT lpPort, LPST_LLDP_TLV lpstLldpTlv, LPST_MSAP lpstMsapId);
287 APP_WORD Check_Ttl_TLV(
LPST_LLDP_PORT lpPort, LPST_LLDP_TLV lpstLldpTlv, LPST_MSAP lpstMsapId);
288 APP_WORD Check_Port_Description_TLV(
LPST_LLDP_PORT lpPort, LPST_LLDP_TLV lpstLldpTlv, LPST_MSAP lpstMsapId);
289 APP_WORD Check_System_Name_TLV(
LPST_LLDP_PORT lpPort, LPST_LLDP_TLV lpstLldpTlv, LPST_MSAP lpstMsapId);
290 APP_WORD Check_System_Description_TLV(
LPST_LLDP_PORT lpPort, LPST_LLDP_TLV lpstLldpTlv, LPST_MSAP lpstMsapId);
291 APP_WORD Check_System_Capability_TLV(
LPST_LLDP_PORT lpPort, LPST_LLDP_TLV lpstLldpTlv, LPST_MSAP lpstMsapId);
292 APP_WORD Check_Mgmt_Addr_TLV(
LPST_LLDP_PORT lpPort, LPST_LLDP_TLV lpstLldpTlv, LPST_MSAP lpstMsapId);
293 APP_WORD Check_Organization_TLV(
LPST_LLDP_PORT lpPort, LPST_LLDP_TLV lpstLldpTlv, LPST_MSAP lpstMsapId);
294 APP_WORD CheckBasicTLv(
LPST_LLDP_PORT lpPort, LPST_LLDP_TLV lpstLldpTlv, LPST_MSAP lpstMsapId);
295 APP_VOID ClearRemSysData(LPST_MSAP lpstMsapId);
296 APP_WORD DeleteMsap(LPST_MSAP lpstMsapid);
297 APP_WORD WriteOrgUnknownTlv(LPST_LLDP_TLV lpstLldpTlv, LPST_MSAP lpstMsapId, APP_BYTE byOrgTlv);
299 APP_WORD CreateOrgUnkTlv(LPST_LLDP_TLV lpstLldpTlv, LPST_MSAP lpstMsapId, APP_BYTE byOrgTlv, APP_LPBYTE lpbyRemOrgUnknownIndex);
300 APP_WORD CheckPnTLV(
LPST_LLDP_PORT lpPort, LPST_LLDP_TLV lpstLldpTlv, LPST_MSAP lpstMsapId);;
301 APP_WORD Check8023TLV(
LPST_LLDP_PORT lpPort, LPST_LLDP_TLV lpstLldpTlv, LPST_MSAP lpstMsapId);
302 APP_WORD GetUnknowTlvIndex(LPST_MSAP lpStMsapRemSys, APP_LPBYTE lpbyNbUnkTlv, APP_LPBYTE lpbyArrayUnkTlvIndex);
303 APP_WORD GetUnknowOrgTlvIndex(LPST_MSAP lpStMsapRemSys, APP_LPBYTE lpbyNbRemoteOrgUnkTlv, APP_LPBYTE lpbyRemoteOrgUnkTlvIndex);