# define SECRET SYSCONFDIR "/" PACKAGE ".secret"
#endif
#ifndef LEASEFILE
-# define LEASEFILE DBDIR "/" PACKAGE "-%s.lease"
+# define LEASEFILE DBDIR "/" PACKAGE "-%s%s%s.lease"
#endif
#ifndef LEASEFILE6
-# define LEASEFILE6 DBDIR "/" PACKAGE "-%s%s.lease6"
+# define LEASEFILE6 LEASEFILE "6"
#endif
#ifndef PIDFILE
# define PIDFILE RUNDIR "/" PACKAGE "%s%s%s.pid"
return bytes;
}
+int
+dhcp_set_leasefile(char *leasefile, size_t len, int family,
+ const struct interface *ifp, const char *extra)
+{
+ char ssid[len];
+
+ switch (family) {
+ case AF_INET:
+ case AF_INET6:
+ break;
+ default:
+ errno = EINVAL;
+ return -1;
+ }
+
+ if (ifp->wireless) {
+ ssid[0] = '-';
+ print_string(ssid + 1, sizeof(ssid) - 1,
+ ESCSTRING,
+ (const uint8_t *)ifp->ssid, ifp->ssid_len);
+ } else
+ ssid[0] = '\0';
+ return snprintf(leasefile, len,
+ family == AF_INET ? LEASEFILE : LEASEFILE6,
+ ifp->name, ssid, extra);
+}
+
static size_t
dhcp_envoption1(char **env, const char *prefix,
const struct dhcp_opt *opt, int vname, const uint8_t *od, size_t ol,
ssize_t print_string(char *, size_t, int, const uint8_t *, size_t);
ssize_t print_option(char *, size_t, int, const uint8_t *, size_t,
const char *);
+int dhcp_set_leasefile(char *, size_t, int,
+ const struct interface *, const char *);
size_t dhcp_envoption(struct dhcpcd_ctx *,
char **, const char *, const char *, struct dhcp_opt *,
goto eexit;
state->raw_fd = state->arp_fd = -1;
TAILQ_INIT(&state->arp_states);
- snprintf(state->leasefile, sizeof(state->leasefile),
- LEASEFILE, ifp->name);
+ dhcp_set_leasefile(state->leasefile, sizeof(state->leasefile),
+ AF_INET, ifp, "");
state->new = read_lease(ifp);
if (state->new == NULL && errno == ENOENT) {
strlcpy(state->leasefile, ifp->name, sizeof(state->leasefile));
state->state = DHS_INIT;
state->reason = "PREINIT";
state->nakoff = 0;
- snprintf(state->leasefile, sizeof(state->leasefile),
- LEASEFILE, ifp->name);
+ dhcp_set_leasefile(state->leasefile, sizeof(state->leasefile),
+ AF_INET, ifp, "");
ifo = ifp->options;
/* We need to drop the leasefile so that dhcp_start
gogogo:
state->state = init_state;
- snprintf(state->leasefile, sizeof(state->leasefile),
- LEASEFILE6, ifp->name,
+ dhcp_set_leasefile(state->leasefile, sizeof(state->leasefile),
+ AF_INET6, ifp,
ifp->options->options & DHCPCD_PFXDLGONLY ? ".pd" : "");
if (ipv6_linklocal(ifp) == NULL) {
syslog(LOG_DEBUG,
if (state == NULL)
goto eexit;
TAILQ_INIT(&state->addrs);
- snprintf(state->leasefile, sizeof(state->leasefile),
- LEASEFILE6, ifp->name,
+ dhcp_set_leasefile(state->leasefile, sizeof(state->leasefile),
+ AF_INET6, ifp,
ifp->options->options & DHCPCD_PFXDLGONLY ? ".pd" : "");
r = dhcp6_readlease(ifp);
if (r == -1 && errno == ENOENT) {
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
.\" SUCH DAMAGE.
.\"
-.Dd January 15, 2015
+.Dd February 9, 2015
.Dt DHCPCD 8
.Os
.Sh NAME
Each script can be disabled by using the
.Fl C , Fl Fl nohook
option described above.
-.It Pa @DBDIR@/dhcpcd\- Ns Ar interface Ns .lease
+.It Pa @DBDIR@/dhcpcd\- Ns Ar interface Ns Ar -ssid Ns .lease
The actual DHCP message sent by the server.
We use this when reading the last
lease and use the files mtime as when it was issued.
-.It Pa @DBDIR@/dhcpcd\- Ns Ar interface Ns .lease6
+.It Pa @DBDIR@/dhcpcd\- Ns Ar interface Ns Ar -ssid Ns .lease6
The actual DHCPv6 message sent by the server.
We use this when reading the last
lease and use the files mtime as when it was issued.