summaryrefslogtreecommitdiff
path: root/accel-pppd/ctrl/ipoe/dhcpv4.c
diff options
context:
space:
mode:
authorDmitry Kozlov <xeb@mail.ru>2017-12-27 14:54:00 +0300
committerDmitry Kozlov <xeb@mail.ru>2017-12-27 14:54:00 +0300
commit5ed4291f41c8f493f5cf6737e871ca1bf4e7f2a5 (patch)
treee192a4c992788f374f3c352e3ca7d02be9bc3d0f /accel-pppd/ctrl/ipoe/dhcpv4.c
parent1d6f68a518cd7f8cc182080b57d76ed16dc3973a (diff)
downloadaccel-ppp-xebd-5ed4291f41c8f493f5cf6737e871ca1bf4e7f2a5.tar.gz
accel-ppp-xebd-5ed4291f41c8f493f5cf6737e871ca1bf4e7f2a5.zip
ipoe: include server's mac into weight notify packet to be used as additional key when weights are equal
Diffstat (limited to 'accel-pppd/ctrl/ipoe/dhcpv4.c')
-rw-r--r--accel-pppd/ctrl/ipoe/dhcpv4.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/accel-pppd/ctrl/ipoe/dhcpv4.c b/accel-pppd/ctrl/ipoe/dhcpv4.c
index 7bbed3f..dde5060 100644
--- a/accel-pppd/ctrl/ipoe/dhcpv4.c
+++ b/accel-pppd/ctrl/ipoe/dhcpv4.c
@@ -836,7 +836,7 @@ out_err:
void dhcpv4_send_notify(struct dhcpv4_serv *serv, struct dhcpv4_packet *req, unsigned int weight)
{
struct dhcpv4_packet *pack = dhcpv4_packet_alloc();
- uint8_t opt[8];
+ uint8_t opt[8 + ETH_ALEN];
if (!pack) {
log_emerg("out of memory\n");
@@ -852,6 +852,7 @@ void dhcpv4_send_notify(struct dhcpv4_serv *serv, struct dhcpv4_packet *req, uns
*(uint32_t *)opt = htonl(ACCEL_PPP_MAGIC);
*(uint32_t *)(opt + 4) = htonl(weight);
+ memcpy(opt + 8, serv->hwaddr, ETH_ALEN);
dhcpv4_packet_add_opt_u8(pack, 53, DHCPDISCOVER);
dhcpv4_packet_add_opt(pack, 43, opt, sizeof(opt));