Commit caa94380 authored by Simon Kelley's avatar Simon Kelley

bugs in IPv6 script calling - wrong DUID and lua relay_address

parent 0793380b
...@@ -217,18 +217,6 @@ int create_helper(int event_fd, int err_fd, uid_t uid, gid_t gid, long max_fd) ...@@ -217,18 +217,6 @@ int create_helper(int event_fd, int err_fd, uid_t uid, gid_t gid, long max_fd)
p += sprintf(p, ":"); p += sprintf(p, ":");
} }
} }
#ifdef HAVE_DHCP6
else
{
/* duid not MAC for IPv6 */
for (p = daemon->dhcp_buff, i = 0; i < data.clid_len; i++)
{
p += sprintf(p, "%.2x", buf[i]);
if (i != data.clid_len - 1)
p += sprintf(p, ":");
}
}
#endif
/* expiry or length into dhcp_buff2 */ /* expiry or length into dhcp_buff2 */
#ifdef HAVE_BROKEN_RTC #ifdef HAVE_BROKEN_RTC
...@@ -265,6 +253,14 @@ int create_helper(int event_fd, int err_fd, uid_t uid, gid_t gid, long max_fd) ...@@ -265,6 +253,14 @@ int create_helper(int event_fd, int err_fd, uid_t uid, gid_t gid, long max_fd)
if (i != daemon->duid_len - 1) if (i != daemon->duid_len - 1)
p += sprintf(p, ":"); p += sprintf(p, ":");
} }
/* duid not MAC for IPv6 */
for (p = daemon->dhcp_buff, i = 0; i < data.clid_len; i++)
{
p += sprintf(p, "%.2x", buf[i]);
if (i != data.clid_len - 1)
p += sprintf(p, ":");
}
} }
#endif #endif
...@@ -365,16 +361,18 @@ int create_helper(int event_fd, int err_fd, uid_t uid, gid_t gid, long max_fd) ...@@ -365,16 +361,18 @@ int create_helper(int event_fd, int err_fd, uid_t uid, gid_t gid, long max_fd)
buf = grab_extradata_lua(buf, end, "tags"); buf = grab_extradata_lua(buf, end, "tags");
for (i = 0; buf; i++) if (is6)
buf = grab_extradata_lua(buf, end, "relay_address");
else if (data.giaddr.s_addr != 0)
{ {
sprintf(daemon->dhcp_buff2, "user_class%i", i); lua_pushstring(lua, inet_ntoa(data.giaddr));
buf = grab_extradata_lua(buf, end, daemon->dhcp_buff2); lua_setfield(lua, -2, "relay_address");
} }
if (!is6 && data.giaddr.s_addr != 0) for (i = 0; buf; i++)
{ {
lua_pushstring(lua, inet_ntoa(data.giaddr)); sprintf(daemon->dhcp_buff2, "user_class%i", i);
lua_setfield(lua, -2, "relay_address"); buf = grab_extradata_lua(buf, end, daemon->dhcp_buff2);
} }
if (data.action != ACTION_DEL && data.remaining_time != 0) if (data.action != ACTION_DEL && data.remaining_time != 0)
...@@ -493,6 +491,8 @@ int create_helper(int event_fd, int err_fd, uid_t uid, gid_t gid, long max_fd) ...@@ -493,6 +491,8 @@ int create_helper(int event_fd, int err_fd, uid_t uid, gid_t gid, long max_fd)
if (is6) if (is6)
buf = grab_extradata(buf, end, "DNSMASQ_RELAY_ADDRESS", &err); buf = grab_extradata(buf, end, "DNSMASQ_RELAY_ADDRESS", &err);
else if (data.giaddr.s_addr != 0)
my_setenv("DNSMASQ_RELAY_ADDRESS", inet_ntoa(data.giaddr), &err);
for (i = 0; buf; i++) for (i = 0; buf; i++)
{ {
...@@ -500,9 +500,6 @@ int create_helper(int event_fd, int err_fd, uid_t uid, gid_t gid, long max_fd) ...@@ -500,9 +500,6 @@ int create_helper(int event_fd, int err_fd, uid_t uid, gid_t gid, long max_fd)
buf = grab_extradata(buf, end, daemon->dhcp_buff2, &err); buf = grab_extradata(buf, end, daemon->dhcp_buff2, &err);
} }
if (!is6 && data.giaddr.s_addr != 0)
my_setenv("DNSMASQ_RELAY_ADDRESS", inet_ntoa(data.giaddr), &err);
if (data.action != ACTION_DEL && data.remaining_time != 0) if (data.action != ACTION_DEL && data.remaining_time != 0)
{ {
sprintf(daemon->dhcp_buff2, "%u", data.remaining_time); sprintf(daemon->dhcp_buff2, "%u", data.remaining_time);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment