const struct interface *ifp;
/* Make our env */
- elen = 5;
+ elen = 6;
+ if (iface->wireless)
+ elen++;
env = xmalloc(sizeof(char *) * (elen + 1));
e = strlen("interface") + strlen(iface->name) + 2;
env[0] = xmalloc(e);
snprintf(env[2], e, "pid=%d", getpid());
env[3] = xmalloc(e);
snprintf(env[3], e, "metric=%d", iface->metric);
+ env[4] = xmalloc(e);
+ snprintf(env[4], e, "wireless=%d", iface->wireless);
l = e = strlen("interface_order=");
for (ifp = ifaces; ifp; ifp = ifp->next)
e += strlen(ifp->name) + 1;
- p = env[4] = xmalloc(e);
+ p = env[5] = xmalloc(e);
strlcpy(p, "interface_order=", e);
e -= l;
p += l;
e--;
}
*--p = '\0';
+ if (iface->wireless) {
+ e = strlen("ssid=") + strlen(iface->ssid) + 2;
+ env[6] = xmalloc(e);
+ snprintf(env[6], e, "ssid=%s", iface->ssid);
+ }
if (iface->state->old) {
e = configure_env(NULL, NULL, iface->state->old, ifo);
if (e > 0) {
/* We reserve the 100 range for virtual interfaces, if and when
* we can work them out. */
iface->metric = 200 + if_nametoindex(iface->name);
- if (getifssid(ifname, iface->ssid) != -1)
+ if (getifssid(ifname, iface->ssid) != -1) {
+ iface->wireless = 1;
iface->metric += 100;
+ }
#ifdef SIOCGIFHWADDR
strlcpy(ifr.ifr_name, ifname, sizeof(ifr.ifr_name));