update: add path section to MPTP packet
This commit is contained in:
@ -152,6 +152,7 @@ typedef enum lm_error {
|
||||
LM_ERR_MPTPListenFail = 150,
|
||||
LM_ERR_PoolInfoBadName = 151,
|
||||
LM_ERR_PoolInfoUnknown = 152,
|
||||
LM_ERR_MPTPBadPath = 153,
|
||||
} lm_error_t;
|
||||
|
||||
typedef struct lm_error_desc {
|
||||
|
@ -13,9 +13,12 @@
|
||||
#####################################
|
||||
# FLAGS #
|
||||
#####################################
|
||||
# HOST SIZE | DATA SIZE #
|
||||
# HOST SIZE | PATH SIZE #
|
||||
#####################################
|
||||
# DATA SIZE #
|
||||
#####################################
|
||||
# HOST #
|
||||
# PATH #
|
||||
# DATA #
|
||||
#...................................#
|
||||
|
||||
@ -82,7 +85,8 @@
|
||||
|
||||
#define MPTP_VERSION_SUPPORTED 0
|
||||
#define MPTP_CODE_MAX 3
|
||||
#define MPTP_DATA_MAX UINT8_MAX
|
||||
#define MPTP_DATA_MAX 4096 // generally this is the page size on x86_64 linux
|
||||
#define MPTP_PATH_MAX UINT8_MAX
|
||||
#define MPTP_HOST_MAX UINT8_MAX
|
||||
#define MPTP_TIMEOUT 10
|
||||
|
||||
@ -106,13 +110,13 @@ typedef enum lm_mptp_response {
|
||||
typedef struct lm_mptp_header {
|
||||
uint16_t flags;
|
||||
uint8_t host_size;
|
||||
uint8_t data_size;
|
||||
uint8_t path_size;
|
||||
uint16_t data_size;
|
||||
} __attribute__((packed)) lm_mptp_header_t;
|
||||
|
||||
typedef struct lm_mptp {
|
||||
lm_mptp_header_t header;
|
||||
char host[MPTP_DATA_MAX];
|
||||
char data[MPTP_DATA_MAX];
|
||||
char *host, *path, *data;
|
||||
} lm_mptp_t;
|
||||
|
||||
typedef bool (*lm_mptp_transfer_callback_t)(char *path, size_t current, size_t total, void *data);
|
||||
@ -125,17 +129,26 @@ typedef bool (*lm_mptp_transfer_callback_t)(char *path, size_t current, size_t t
|
||||
#define MPTP_IS_REQUEST(m) (MPTP_FLAGS_TYPE(m) == 0)
|
||||
#define MPTP_IS_LAST(m) (MPTP_FLAGS_LAST(m) == 1)
|
||||
|
||||
bool lm_mptp_init(lm_mptp_t *packet, bool is_request, uint8_t code, bool is_last);
|
||||
bool lm_mptp_set_data(lm_mptp_t *packet, char *data, size_t size);
|
||||
bool lm_mptp_set_host(lm_mptp_t *packet, char *host);
|
||||
bool lm_mptp_get_host(lm_mptp_t *packet, char *host);
|
||||
bool lm_mptp_get_data(lm_mptp_t *packet, char *data);
|
||||
void lm_mptp_init(lm_mptp_t *packet);
|
||||
bool lm_mptp_new(lm_mptp_t *packet, bool is_request, uint8_t code, bool is_last);
|
||||
void lm_mptp_free(lm_mptp_t *packet);
|
||||
|
||||
int lm_mptp_socket(char *addr, uint16_t port, struct sockaddr *saddr);
|
||||
bool lm_mptp_socket_opts(int sock);
|
||||
void lm_mptp_copy(lm_mptp_t *dst, lm_mptp_t *src);
|
||||
bool lm_mptp_verify(lm_mptp_t *packet);
|
||||
void lm_mptp_close(int sock);
|
||||
bool lm_mptp_recv(int sock, lm_mptp_t *packet);
|
||||
void lm_mptp_free(lm_mptp_t *packet);
|
||||
|
||||
bool lm_mptp_set_data(lm_mptp_t *packet, char *data, size_t size);
|
||||
bool lm_mptp_get_data(lm_mptp_t *packet, char *data);
|
||||
|
||||
bool lm_mptp_set_host(lm_mptp_t *packet, char *host);
|
||||
bool lm_mptp_get_host(lm_mptp_t *packet, char *host);
|
||||
|
||||
bool lm_mptp_set_path(lm_mptp_t *packet, char *path);
|
||||
bool lm_mptp_get_path(lm_mptp_t *packet, char *path);
|
||||
|
||||
int lm_mptp_client_connect(char *addr, uint16_t port);
|
||||
bool lm_mptp_client_verify(lm_mptp_t *packet);
|
||||
|
@ -30,6 +30,7 @@ bool exists(char *path, struct stat *st);
|
||||
bool is_empty(char *p);
|
||||
bool is_dir_empty(char *p);
|
||||
bool rmrf(char *p);
|
||||
int digits(int n);
|
||||
|
||||
bool package_parse(char *package, char *name, char *version);
|
||||
bool package_version_valid(char *name);
|
||||
|
Reference in New Issue
Block a user