Lines Matching refs:la

101 static int sctp_PktParser(struct libalias *la, int direction, struct ip *pip,
103 static int GetAsconfVtags(struct libalias *la, struct sctp_nat_msg *sm,
105 static int IsASCONFack(struct libalias *la, struct sctp_nat_msg *sm, int direction);
110 static int IsADDorDEL(struct libalias *la, struct sctp_nat_msg *sm, int direction);
113 static int ProcessSctpMsg(struct libalias *la, int direction, \
116 static int ID_process(struct libalias *la, int direction,\
118 static int INi_process(struct libalias *la, int direction,\
120 static int INa_process(struct libalias *la, int direction,\
122 static int UP_process(struct libalias *la, int direction,\
124 static int CL_process(struct libalias *la, int direction,\
126 static void TxAbortErrorM(struct libalias *la, struct sctp_nat_msg *sm,\
131 FindSctpLocal(struct libalias *la, struct in_addr l_addr, struct in_addr g_addr, uint32_t l_vtag, u…
133 FindSctpGlobal(struct libalias *la, struct in_addr g_addr, uint32_t g_vtag, uint16_t g_port, uint16…
135 FindSctpGlobalClash(struct libalias *la, struct sctp_nat_assoc *Cassoc);
137 FindSctpLocalT(struct libalias *la, struct in_addr g_addr, uint32_t l_vtag, uint16_t g_port, uint1…
139 FindSctpGlobalT(struct libalias *la, struct in_addr g_addr, uint32_t g_vtag, uint16_t l_port, uint1…
141 static int AddSctpAssocLocal(struct libalias *la, struct sctp_nat_assoc *assoc, struct in_addr g_ad…
142 static int AddSctpAssocGlobal(struct libalias *la, struct sctp_nat_assoc *assoc);
143 static void RmSctpAssoc(struct libalias *la, struct sctp_nat_assoc *assoc);
147 static void sctp_AddTimeOut(struct libalias *la, struct sctp_nat_assoc *assoc);
148 static void sctp_RmTimeOut(struct libalias *la, struct sctp_nat_assoc *assoc);
149 static void sctp_ResetTimeOut(struct libalias *la, struct sctp_nat_assoc *assoc, int newexp);
150 void sctp_CheckTimers(struct libalias *la);
156 static void logTimerQ(struct libalias *la);
157 static void logSctpGlobal(struct libalias *la);
158 static void logSctpLocal(struct libalias *la);
181 void SctpShowAliasStats(struct libalias *la);
300 #define SN_I_T(la) (LibAliasTime + sysctl_init_timer) /**< INIT State expiration time in seco… argument
301 #define SN_U_T(la) (LibAliasTime + sysctl_up_timer) /**< UP State expiration time in second… argument
302 #define SN_C_T(la) (LibAliasTime + sysctl_shutdown_timer) /**< CL State expiration time in second… argument
303 #define SN_X_T(la) (LibAliasTime + sysctl_holddown_timer) /**< Wait after a shutdown complete in … argument
649 AliasSctpInit(struct libalias *la) in AliasSctpInit() argument
653 la->sctpNatTableSize = sysctl_hashtable_size; in AliasSctpInit()
655 SctpAliasLog("Initialising SCTP NAT Instance (hash_table_size:%d)\n", la->sctpNatTableSize)); in AliasSctpInit()
656 la->sctpTableLocal = sn_calloc(la->sctpNatTableSize, sizeof(struct sctpNatTableL)); in AliasSctpInit()
657 la->sctpTableGlobal = sn_calloc(la->sctpNatTableSize, sizeof(struct sctpNatTableG)); in AliasSctpInit()
658 la->sctpNatTimer.TimerQ = sn_calloc(SN_TIMER_QUEUE_SIZE, sizeof(struct sctpTimerQ)); in AliasSctpInit()
660 for (i = 0; i < la->sctpNatTableSize; i++) { in AliasSctpInit()
661 LIST_INIT(&la->sctpTableLocal[i]); in AliasSctpInit()
662 LIST_INIT(&la->sctpTableGlobal[i]); in AliasSctpInit()
667 LIST_INIT(&la->sctpNatTimer.TimerQ[i]); in AliasSctpInit()
669 la->sctpNatTimer.loc_time=time_uptime; /* LibAliasTime is not set yet */ in AliasSctpInit()
671 la->sctpNatTimer.loc_time=LibAliasTime; in AliasSctpInit()
673 la->sctpNatTimer.cur_loc = 0; in AliasSctpInit()
674 la->sctpLinkCount = 0; in AliasSctpInit()
690 AliasSctpTerm(struct libalias *la) in AliasSctpTerm() argument
695 LIBALIAS_LOCK_ASSERT(la); in AliasSctpTerm()
699 assoc1 = LIST_FIRST(&la->sctpNatTimer.TimerQ[i]); in AliasSctpTerm()
708 sn_free(la->sctpTableLocal); in AliasSctpTerm()
709 sn_free(la->sctpTableGlobal); in AliasSctpTerm()
710 sn_free(la->sctpNatTimer.TimerQ); in AliasSctpTerm()
737 SctpAlias(struct libalias *la, struct ip *pip, int direction) in SctpAlias() argument
748 sctp_CheckTimers(la); /* Check timers */ in SctpAlias()
751 …rtnval = sctp_PktParser(la, direction, pip, &msg, &assoc); //using *char (change to mbuf when get … in SctpAlias()
777 TxAbortErrorM(la, &msg, assoc, SN_REFLECT_ERROR, direction); /*NB assoc=NULL */ in SctpAlias()
792 rtnval = ProcessSctpMsg(la, direction, &msg, assoc); in SctpAlias()
796 logSctpLocal(la); in SctpAlias()
797 logSctpGlobal(la); in SctpAlias()
799 SN_LOG(SN_LOG_DEBUG, logTimerQ(la)); in SctpAlias()
826 TxAbortErrorM(la, &msg, assoc, rtnval, direction); in SctpAlias()
838 sctp_RmTimeOut(la, assoc); in SctpAlias()
839 RmSctpAssoc(la, assoc); in SctpAlias()
841 LIBALIAS_LOCK_ASSERT(la); in SctpAlias()
931 TxAbortErrorM(struct libalias *la, struct sctp_nat_msg *sm, struct sctp_nat_assoc *assoc, int sndrp… in TxAbortErrorM() argument
1049 sctp_PktParser(struct libalias *la, int direction, struct ip *pip, in sctp_PktParser() argument
1108 …*passoc = FindSctpGlobalT(la, pip->ip_src, sctp_hdr->v_tag, sctp_hdr->dest_port, sctp_hdr->src_po… in sctp_PktParser()
1110 …*passoc = FindSctpLocalT(la, pip->ip_dst, sctp_hdr->v_tag, sctp_hdr->dest_port, sctp_hdr->src_port… in sctp_PktParser()
1114 …*passoc = FindSctpGlobal(la, pip->ip_src, sctp_hdr->v_tag, sctp_hdr->src_port, sctp_hdr->dest_port… in sctp_PktParser()
1116 …*passoc = FindSctpLocal(la, pip->ip_src, pip->ip_dst, sctp_hdr->v_tag, sctp_hdr->src_port, sctp_h… in sctp_PktParser()
1180 …*passoc = FindSctpGlobal(la, ipv4addr, sctp_hdr->v_tag, sctp_hdr->src_port, sctp_hdr->dest_port, &… in sctp_PktParser()
1273 GetAsconfVtags(struct libalias *la, struct sctp_nat_msg *sm, uint32_t *l_vtag, uint32_t *g_vtag, in… in GetAsconfVtags() argument
1605 IsASCONFack(struct libalias *la, struct sctp_nat_msg *sm, int direction) in IsASCONFack() argument
1659 IsADDorDEL(struct libalias *la, struct sctp_nat_msg *sm, int direction) in IsADDorDEL() argument
1727 ProcessSctpMsg(struct libalias *la, int direction, struct sctp_nat_msg *sm, struct sctp_nat_assoc *… in ProcessSctpMsg() argument
1733 rtnval = ID_process(la, direction, assoc, sm); in ProcessSctpMsg()
1739 return (INi_process(la, direction, assoc, sm)); in ProcessSctpMsg()
1741 return (INa_process(la, direction, assoc, sm)); in ProcessSctpMsg()
1743 return (UP_process(la, direction, assoc, sm)); in ProcessSctpMsg()
1745 return (CL_process(la, direction, assoc, sm)); in ProcessSctpMsg()
1765 ID_process(struct libalias *la, int direction, struct sctp_nat_assoc *assoc, struct sctp_nat_msg *s… in ID_process() argument
1772 if (!GetAsconfVtags(la, sm, &(assoc->l_vtag), &(assoc->g_vtag), direction)) in ID_process()
1781 assoc->a_addr = FindAliasAddress(la, assoc->l_addr); in ID_process()
1786 if (AddSctpAssocGlobal(la, assoc)) /* DB clash: need to add dst address */ in ID_process()
1789 if (AddSctpAssocLocal(la, assoc, sm->ip_hdr->ip_dst)) /* DB clash */ in ID_process()
1795 assoc->l_addr = FindSctpRedirectAddress(la, sm); in ID_process()
1801 if (AddSctpAssocLocal(la, assoc, sm->ip_hdr->ip_src)) /* DB clash */ in ID_process()
1804 if (AddSctpAssocGlobal(la, assoc)) /* DB clash: need to add src address */ in ID_process()
1811 assoc->exp = SN_I_T(la); in ID_process()
1812 sctp_AddTimeOut(la,assoc); in ID_process()
1834 INi_process(struct libalias *la, int direction, struct sctp_nat_assoc *assoc, struct sctp_nat_msg *… in INi_process() argument
1838 sctp_ResetTimeOut(la, assoc, SN_I_T(la)); in INi_process()
1846 if (AddSctpAssocLocal(la, assoc, sm->ip_hdr->ip_src)) { /* DB clash */ in INi_process()
1854 if (AddSctpAssocGlobal(la, assoc)) { /* DB clash */ in INi_process()
1861 sctp_ResetTimeOut(la,assoc, SN_U_T(la)); in INi_process()
1886 INa_process(struct libalias *la, int direction,struct sctp_nat_assoc *assoc, struct sctp_nat_msg *s… in INa_process() argument
1890 sctp_ResetTimeOut(la,assoc, SN_I_T(la)); in INa_process()
1902 if (IsASCONFack(la,sm,direction)) { in INa_process()
1905 sctp_ResetTimeOut(la,assoc, SN_U_T(la)); in INa_process()
1934 UP_process(struct libalias *la, int direction, struct sctp_nat_assoc *assoc, struct sctp_nat_msg *s… in UP_process() argument
1939 sctp_ResetTimeOut(la,assoc, SN_C_T(la)); in UP_process()
1946 switch (IsADDorDEL(la,sm,direction)) { in UP_process()
1956 sctp_ResetTimeOut(la,assoc, SN_U_T(la)); in UP_process()
1978 CL_process(struct libalias *la, int direction,struct sctp_nat_assoc *assoc, struct sctp_nat_msg *sm) in CL_process() argument
1984 sctp_ResetTimeOut(la, assoc, SN_X_T(la));/* allow to stay open for Tbit packets*/ in CL_process()
1990 sctp_ResetTimeOut(la, assoc, SN_C_T(la)); in CL_process()
2026 FindSctpLocal(struct libalias *la, struct in_addr l_addr, struct in_addr g_addr, uint32_t l_vtag, u… in FindSctpLocal() argument
2033 i = SN_TABLE_HASH(l_vtag, l_port, la->sctpNatTableSize); in FindSctpLocal()
2034 LIST_FOREACH(assoc, &la->sctpTableLocal[i], list_L) { in FindSctpLocal()
2063 FindSctpGlobalClash(struct libalias *la, struct sctp_nat_assoc *Cassoc) in FindSctpGlobalClash() argument
2071 i = SN_TABLE_HASH(Cassoc->g_vtag, Cassoc->g_port, la->sctpNatTableSize); in FindSctpGlobalClash()
2072 LIST_FOREACH(assoc, &la->sctpTableGlobal[i], list_G) { in FindSctpGlobalClash()
2110 FindSctpGlobal(struct libalias *la, struct in_addr g_addr, uint32_t g_vtag, uint16_t g_port, uint16… in FindSctpGlobal() argument
2118 i = SN_TABLE_HASH(g_vtag, g_port, la->sctpNatTableSize); in FindSctpGlobal()
2119 LIST_FOREACH(assoc, &la->sctpTableGlobal[i], list_G) { in FindSctpGlobal()
2151 FindSctpLocalT(struct libalias *la, struct in_addr g_addr, uint32_t l_vtag, uint16_t g_port, uint16… in FindSctpLocalT() argument
2159 i = SN_TABLE_HASH(l_vtag, g_port, la->sctpNatTableSize); in FindSctpLocalT()
2160 LIST_FOREACH(assoc, &la->sctpTableGlobal[i], list_G) { in FindSctpLocalT()
2194 FindSctpGlobalT(struct libalias *la, struct in_addr g_addr, uint32_t g_vtag, uint16_t l_port, uint1… in FindSctpGlobalT() argument
2201 i = SN_TABLE_HASH(g_vtag, l_port, la->sctpNatTableSize); in FindSctpGlobalT()
2202 LIST_FOREACH(assoc, &la->sctpTableLocal[i], list_L) { in FindSctpGlobalT()
2235 AddSctpAssocLocal(struct libalias *la, struct sctp_nat_assoc *assoc, struct in_addr g_addr) in AddSctpAssocLocal() argument
2239 LIBALIAS_LOCK_ASSERT(la); in AddSctpAssocLocal()
2240 found = FindSctpLocal(la, assoc->l_addr, g_addr, assoc->l_vtag, assoc->l_port, assoc->g_port); in AddSctpAssocLocal()
2252 RmSctpAssoc(la, found); in AddSctpAssocLocal()
2253 sctp_RmTimeOut(la, found); in AddSctpAssocLocal()
2260 …LIST_INSERT_HEAD(&la->sctpTableLocal[SN_TABLE_HASH(assoc->l_vtag, assoc->l_port, la->sctpNatTableS… in AddSctpAssocLocal()
2263 la->sctpLinkCount++; //increment link count in AddSctpAssocLocal()
2267 if (la->packetAliasMode & PKT_ALIAS_LOG) in AddSctpAssocLocal()
2268 SctpShowAliasStats(la); in AddSctpAssocLocal()
2292 AddSctpAssocGlobal(struct libalias *la, struct sctp_nat_assoc *assoc) in AddSctpAssocGlobal() argument
2296 LIBALIAS_LOCK_ASSERT(la); in AddSctpAssocGlobal()
2297 found = FindSctpGlobalClash(la, assoc); in AddSctpAssocGlobal()
2302 RmSctpAssoc(la, found); in AddSctpAssocGlobal()
2303 sctp_RmTimeOut(la, found); in AddSctpAssocGlobal()
2310 …LIST_INSERT_HEAD(&la->sctpTableGlobal[SN_TABLE_HASH(assoc->g_vtag, assoc->g_port, la->sctpNatTable… in AddSctpAssocGlobal()
2313 la->sctpLinkCount++; //increment link count in AddSctpAssocGlobal()
2317 if (la->packetAliasMode & PKT_ALIAS_LOG) in AddSctpAssocGlobal()
2318 SctpShowAliasStats(la); in AddSctpAssocGlobal()
2341 RmSctpAssoc(struct libalias *la, struct sctp_nat_assoc *assoc) in RmSctpAssoc() argument
2354 LIBALIAS_LOCK_ASSERT(la); in RmSctpAssoc()
2357 la->sctpLinkCount--; //decrement link count in RmSctpAssoc()
2363 la->sctpLinkCount--; //decrement link count in RmSctpAssoc()
2368 if (la->packetAliasMode & PKT_ALIAS_LOG) in RmSctpAssoc()
2369 SctpShowAliasStats(la); in RmSctpAssoc()
2420 sctp_AddTimeOut(struct libalias *la, struct sctp_nat_assoc *assoc) in sctp_AddTimeOut() argument
2423 LIBALIAS_LOCK_ASSERT(la); in sctp_AddTimeOut()
2424 add_loc = assoc->exp - la->sctpNatTimer.loc_time + la->sctpNatTimer.cur_loc; in sctp_AddTimeOut()
2427 LIST_INSERT_HEAD(&la->sctpNatTimer.TimerQ[add_loc], assoc, timer_Q); in sctp_AddTimeOut()
2441 sctp_RmTimeOut(struct libalias *la, struct sctp_nat_assoc *assoc) in sctp_RmTimeOut() argument
2443 LIBALIAS_LOCK_ASSERT(la); in sctp_RmTimeOut()
2459 sctp_ResetTimeOut(struct libalias *la, struct sctp_nat_assoc *assoc, int newexp) in sctp_ResetTimeOut() argument
2462 sctp_RmTimeOut(la, assoc); in sctp_ResetTimeOut()
2464 sctp_AddTimeOut(la, assoc); in sctp_ResetTimeOut()
2487 sctp_CheckTimers(struct libalias *la) in sctp_CheckTimers() argument
2491 LIBALIAS_LOCK_ASSERT(la); in sctp_CheckTimers()
2492 while(LibAliasTime >= la->sctpNatTimer.loc_time) { in sctp_CheckTimers()
2493 while (!LIST_EMPTY(&la->sctpNatTimer.TimerQ[la->sctpNatTimer.cur_loc])) { in sctp_CheckTimers()
2494 assoc = LIST_FIRST(&la->sctpNatTimer.TimerQ[la->sctpNatTimer.cur_loc]); in sctp_CheckTimers()
2500 RmSctpAssoc(la, assoc); in sctp_CheckTimers()
2504 sctp_AddTimeOut(la, assoc); in sctp_CheckTimers()
2508 ++la->sctpNatTimer.loc_time; in sctp_CheckTimers()
2509 if (++la->sctpNatTimer.cur_loc >= SN_TIMER_QUEUE_SIZE) in sctp_CheckTimers()
2510 la->sctpNatTimer.cur_loc = 0; in sctp_CheckTimers()
2654 static void logSctpGlobal(struct libalias *la) in logSctpGlobal() argument
2660 for (i = 0; i < la->sctpNatTableSize; i++) { in logSctpGlobal()
2661 LIST_FOREACH(assoc, &la->sctpTableGlobal[i], list_G) { in logSctpGlobal()
2672 static void logSctpLocal(struct libalias *la) in logSctpLocal() argument
2678 for (i = 0; i < la->sctpNatTableSize; i++) { in logSctpLocal()
2679 LIST_FOREACH(assoc, &la->sctpTableLocal[i], list_L) { in logSctpLocal()
2690 static void logTimerQ(struct libalias *la) in logTimerQ() argument
2698 LIST_FOREACH(assoc, &la->sctpNatTimer.TimerQ[i], timer_Q) { in logTimerQ()