X-Git-Url: http://git.ozlabs.org/?a=blobdiff_plain;f=discover%2Fdiscover-server.c;h=6c803728511cb5ea523ee52f33668a7f6982c166;hb=b8122dc9340e2f208220f0c88b4d71f91b78774f;hp=bafcb77630ec9379b48eb3c8bb2ddc80c0c50ef1;hpb=01ed80939b8ed440390729c524ad875047dbd406;p=petitboot diff --git a/discover/discover-server.c b/discover/discover-server.c index bafcb77..6c80372 100644 --- a/discover/discover-server.c +++ b/discover/discover-server.c @@ -29,6 +29,7 @@ struct discover_server { }; struct client { + struct discover_server *server; struct list_item list; int fd; }; @@ -129,6 +130,7 @@ static int write_remove_message(struct discover_server *server, static int discover_server_process_message(void *arg) { struct pb_protocol_message *message; + struct boot_command *boot_command; struct client *client = arg; message = pb_protocol_read_message(client, client->fd); @@ -141,7 +143,14 @@ static int discover_server_process_message(void *arg) return 0; } - /* todo: process boot message */ + boot_command = pb_protocol_deserialise_boot_command(client, message); + if (!boot_command) { + pb_log("%s: no boot command?", __func__); + return 0; + } + + device_handler_boot(client->server->device_handler, boot_command); + return 0; } @@ -165,6 +174,7 @@ static int discover_server_process_connection(void *arg) talloc_set_destructor(client, client_destructor); client->fd = fd; + client->server = server; /* send existing devices to client */ n_devices = device_handler_get_device_count(server->device_handler);