static void ndsctl_auth(int fd, char *arg) { t_client *client; char *ip, *mac; debug(LOG_DEBUG, "Entering ndsctl_auth..."); LOCK_CLIENT_LIST(); /* arg should be IP address of client */ debug(LOG_DEBUG, "Argument: %s (@%x)", arg, arg); /* Add client to client list... */ if ((client = client_list_add_client(arg)) == NULL) { debug(LOG_DEBUG, "Could not add client."); UNLOCK_CLIENT_LIST(); write(fd, "No", 2); return; } /* We have a client. Get both ip and mac address and authenticate */ ip = safe_strdup(client->ip); mac = safe_strdup(client->mac); UNLOCK_CLIENT_LIST(); auth_client_action(ip, mac, AUTH_MAKE_AUTHENTICATED); free(ip); free(mac); write(fd, "Yes", 3); debug(LOG_DEBUG, "Exiting ndsctl_auth..."); }
/** * Add client making a request to client list. * Return pointer to the client list entry for this client. * * N.B.: This does not authenticate the client; it only makes * their information available on the client list. */ t_client * http_nodogsplash_add_client(request *r) { t_client *client; LOCK_CLIENT_LIST(); client = client_list_add_client(r->clientAddr); UNLOCK_CLIENT_LIST(); return client; }
/** * Add client making a request to client list. * Return pointer to the client list entry for this client. * * N.B.: This does not authenticate the client; it only makes * their information available on the client list. */ static t_client * add_client(const char *ip_addr) { t_client *client; LOCK_CLIENT_LIST(); client = client_list_add_client(ip_addr); UNLOCK_CLIENT_LIST(); return client; }