summaryrefslogtreecommitdiffstats
path: root/sys/netinet/if_ether.c
diff options
context:
space:
mode:
authormelifaro <melifaro@FreeBSD.org>2015-08-11 09:26:11 +0000
committermelifaro <melifaro@FreeBSD.org>2015-08-11 09:26:11 +0000
commitd8f92ce2cfe8b9c73a429016a0fa82c19a19230a (patch)
tree6aacce2cd02cc4b0168ccde30e8ce8827ae45bc1 /sys/netinet/if_ether.c
parent84344d1daa9b49c850b25076f2c93ed3210b0d2e (diff)
downloadFreeBSD-src-d8f92ce2cfe8b9c73a429016a0fa82c19a19230a.zip
FreeBSD-src-d8f92ce2cfe8b9c73a429016a0fa82c19a19230a.tar.gz
Store addresses instead of sockaddrs inside llentry.
This permits us having all (not fully true yet) all the info needed in lookup process in first 64 bytes of 'struct llentry'. struct llentry layout: BEFORE: [rwlock .. state .. state .. MAC ] (lle+1) [sockaddr_in[6]] AFTER [ in[6]_addr MAC .. state .. rwlock ] Currently, address part of struct llentry has only 16 bytes for the key. However, lltable does not restrict any custom lltable consumers with long keys use the previous approach (store key at (lle+1)). Sponsored by: Yandex LLC
Diffstat (limited to 'sys/netinet/if_ether.c')
-rw-r--r--sys/netinet/if_ether.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/sys/netinet/if_ether.c b/sys/netinet/if_ether.c
index 8006226..207a416 100644
--- a/sys/netinet/if_ether.c
+++ b/sys/netinet/if_ether.c
@@ -813,7 +813,7 @@ match:
m_hold = la->la_hold;
la->la_hold = NULL;
la->la_numheld = 0;
- memcpy(&sa, L3_ADDR(la), sizeof(sa));
+ lltable_fill_sa_entry(la, (struct sockaddr *)&sa);
LLE_WUNLOCK(la);
for (; m_hold != NULL; m_hold = m_hold_next) {
m_hold_next = m_hold->m_nextpkt;
OpenPOWER on IntegriCloud