fix access BUM traffic handling

This commit is contained in:
Christian Giese
2023-01-19 11:51:58 +00:00
parent b03f923398
commit 8e0f9df4e4
+12 -4
View File
@@ -1581,17 +1581,15 @@ bbl_access_rx_arp(bbl_access_interface_s *interface,
bbl_arp_s *arp = (bbl_arp_s*)eth->next;
if(arp->sender_ip == session->peer_ip_address) {
if(!session->arp_resolved) {
memcpy(session->server_mac, arp->sender, ETH_ADDR_LEN);
}
if(arp->code == ARP_REQUEST) {
if(arp->target_ip == session->ip_address) {
session->send_requests |= BBL_SEND_ARP_REPLY;
bbl_session_tx_qnode_insert(session);
}
} else {
} else if(arp->code == ARP_REPLY) {
if(!session->arp_resolved) {
session->arp_resolved = true;
memcpy(session->server_mac, arp->sender, ETH_ADDR_LEN);
bbl_access_rx_established_ipoe(interface, session, eth);
if(g_ctx->config.arp_interval) {
timer_add(&g_ctx->timer_root, &session->timer_arp, "ARP timeout", g_ctx->config.arp_interval, 0, session, &bbl_arp_timeout);
@@ -1660,6 +1658,11 @@ bbl_access_rx_handler_multicast(bbl_access_interface_s *interface,
for(session_index = 0; session_index < g_ctx->sessions; session_index++) {
session = &g_ctx->session_list[session_index];
if(session->access_interface != interface) {
continue;
}
if(session->access_type == ACCESS_TYPE_IPOE) {
if(session->session_state != BBL_TERMINATED &&
session->session_state != BBL_IDLE) {
@@ -1690,6 +1693,11 @@ bbl_access_rx_handler_broadcast(bbl_access_interface_s *interface,
for(session_index = 0; session_index < g_ctx->sessions; session_index++) {
session = &g_ctx->session_list[session_index];
if(session->access_interface != interface) {
continue;
}
if(session->access_type == ACCESS_TYPE_IPOE) {
if(session->session_state != BBL_TERMINATED &&
session->session_state != BBL_IDLE) {