# (C) 2006 by knox # released under the GPL v2 --- src/dnsmasq.h.orig 2006-05-31 22:42:50.000000000 +0200 +++ src/dnsmasq.h 2006-05-31 22:45:39.000000000 +0200 @@ -300,6 +300,7 @@ int auth_name; /* hostname came from config, not from client */ time_t expires; /* lease expiry */ unsigned char hwaddr[ETHER_ADDR_LEN]; + char *ifrname; /* name of interface */ struct in_addr addr; struct dhcp_lease *next; }; @@ -570,6 +571,7 @@ unsigned char *clid, int clid_len); void lease_set_hostname(struct dhcp_lease *lease, char *name, char *suffix, int auth); +void lease_set_ifrname(struct dhcp_lease *lease, char *ifrname); void lease_set_expires(struct dhcp_lease *lease, time_t exp); struct dhcp_lease *lease_find_by_client(unsigned char *hwaddr, unsigned char *clid, int clid_len); --- src/lease.c.orig 2006-05-31 22:43:00.000000000 +0200 +++ src/lease.c 2006-05-31 22:50:56.000000000 +0200 @@ -144,7 +144,8 @@ lease->hostname && strlen(lease->hostname) != 0 ? lease->hostname : "*"); /* lease 00:12:79:41:AA:01 192.168.178.40 1122416 "computer" 0100127941b4a0 */ - fprintf(multid_leases,"lease %.2X:%.2X:%.2X:%.2X:%.2X:%.2X %s %lu \"%s\" ", + fprintf(multid_leases,"%s %.2X:%.2X:%.2X:%.2X:%.2X:%.2X %s %lu \"%s\" ", + lease->ifrname && strcmp(lease->ifrname, "wlan") == 0 ? "wlease" : "lease", lease->hwaddr[0], lease->hwaddr[1], lease->hwaddr[2], lease->hwaddr[3], lease->hwaddr[4], lease->hwaddr[5], inet_ntoa(lease->addr), expires, @@ -260,7 +261,7 @@ return NULL; lease->clid = NULL; - lease->hostname = lease->fqdn = NULL; + lease->hostname = lease->fqdn = lease->ifrname = NULL; lease->addr = addr; memset(lease->hwaddr, 0, ETHER_ADDR_LEN); lease->expires = 1; @@ -325,6 +326,23 @@ return 1; } +void lease_set_ifrname (struct dhcp_lease *lease, char *ifrname) +{ + char *lease_ifrname = NULL; + + if (!(lease_ifrname = malloc(strlen(ifrname) + 1))) + return; /* whoops */ + + strcpy(lease_ifrname, ifrname); + + if (lease->ifrname) + free(lease->ifrname); + + lease->ifrname = lease_ifrname; + + file_dirty = force; +} + void lease_set_hostname(struct dhcp_lease *lease, char *name, char *suffix, int auth) { struct dhcp_lease *lease_tmp; --- src/rfc2131.c.orig 2006-05-31 22:43:12.000000000 +0200 +++ src/rfc2131.c 2006-05-31 22:51:28.000000000 +0200 @@ -313,6 +313,7 @@ lease_set_hwaddr(lease, chaddr, NULL, 0); if (hostname) lease_set_hostname(lease, hostname, daemon->domain_suffix, 1); + lease_set_ifrname(lease, iface_name); lease_set_expires(lease, 0); /* infinite lease */ p = do_req_options(context, p, end, NULL, daemon, @@ -710,6 +711,7 @@ lease_set_hwaddr(lease, chaddr, clid, clid_len); if (hostname) lease_set_hostname(lease, hostname, daemon->domain_suffix, hostname_auth); + lease_set_ifrname(lease, iface_name); lease_set_expires(lease, time == 0xffffffff ? 0 : now + (time_t)time); mess->siaddr = context->local;