blob: 8019b78dfd9804b09fe16aaf80d72fed8797990f [file] [log] [blame]
// Copyright 2016 Google Inc. All Rights Reserved.
//
// Permission is hereby granted, free of charge, to any person obtaining
// a copy of this software and associated documentation files
// (the "Software"), to deal in the Software without restriction,
// including without limitation the rights to use, copy, modify, merge,
// publish, distribute, sublicense, and/or sell copies of the Software,
// and to permit persons to whom the Software is furnished to do so,
// subject to the following conditions:
//
// The above copyright notice and this permission notice shall be
// included in all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
// CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
// SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#pragma once
#define NB_MAGIC 0xAA774217
#define NB_SERVER_PORT 33330
#define NB_ADVERT_PORT 33331
#define NB_COMMAND 1 // arg=0, data=command
#define NB_SEND_FILE 2 // arg=0, data=filename
#define NB_DATA 3 // arg=blocknum, data=data
#define NB_BOOT 4 // arg=0
#define NB_ACK 0
#define NB_ADVERTISE 0x77777777
#define NB_ERROR 0x80000000
#define NB_ERROR_BAD_CMD 0x80000001
#define NB_ERROR_BAD_PARAM 0x80000002
#define NB_ERROR_TOO_LARGE 0x80000003
typedef struct nbmsg_t {
uint32_t magic;
uint32_t cookie;
uint32_t cmd;
uint32_t arg;
uint8_t data[0];
} nbmsg;
int netboot_init(void *buf, size_t len);
int netboot_poll(void);