| 1171 | } |
| 1172 | |
| 1173 | static void |
| 1174 | set80211bssid(const char *val, int d, int s, const struct afswtch *rafp) |
| 1175 | { |
| 1176 | |
| 1177 | if (!isanyarg(val)) { |
| 1178 | char *temp; |
| 1179 | struct sockaddr_dl sdl; |
| 1180 | |
| 1181 | temp = malloc(strlen(val) + 2); /* ':' and '\0' */ |
| 1182 | if (temp == NULL) |
| 1183 | errx(1, "malloc failed"); |
| 1184 | temp[0] = ':'; |
| 1185 | strcpy(temp + 1, val); |
| 1186 | sdl.sdl_len = sizeof(sdl); |
| 1187 | link_addr(temp, &sdl); |
| 1188 | free(temp); |
| 1189 | if (sdl.sdl_alen != IEEE80211_ADDR_LEN) |
| 1190 | errx(1, "malformed link-level address"); |
| 1191 | set80211(s, IEEE80211_IOC_BSSID, 0, |
| 1192 | IEEE80211_ADDR_LEN, LLADDR(&sdl)); |
| 1193 | } else { |
| 1194 | uint8_t zerobssid[IEEE80211_ADDR_LEN]; |
| 1195 | memset(zerobssid, 0, sizeof(zerobssid)); |
| 1196 | set80211(s, IEEE80211_IOC_BSSID, 0, |
| 1197 | IEEE80211_ADDR_LEN, zerobssid); |
| 1198 | } |
| 1199 | } |
| 1200 | |
| 1201 | static int |
| 1202 | getac(const char *ac) |