- Add startup-config(5) manpage [FIXME].
- Revise nsctl to allow arbitrary strings/args to be passed to plugins.
This commit is contained in:
parent
5d4d6bb059
commit
5e01d2924d
17 changed files with 796 additions and 415 deletions
56
control.h
56
control.h
|
|
@ -1,18 +1,54 @@
|
|||
#ifndef __CONTROL_H__
|
||||
#define __CONTROL_H__
|
||||
|
||||
#define PKT_RESP_OK 1
|
||||
#define PKT_RESP_ERROR 2
|
||||
#define NSCTL_PORT 1702
|
||||
#define NSCTL_MAGIC 0x9013
|
||||
|
||||
#define PKT_LOAD_PLUGIN 5
|
||||
#define PKT_UNLOAD_PLUGIN 6
|
||||
/* builtin commands */
|
||||
#define NSCTL_REQUEST (1 << 4)
|
||||
#define NSCTL_REQ_LOAD (NSCTL_REQUEST | 1)
|
||||
#define NSCTL_REQ_UNLOAD (NSCTL_REQUEST | 2)
|
||||
#define NSCTL_REQ_HELP (NSCTL_REQUEST | 3)
|
||||
|
||||
#define PKT_GARDEN 1000
|
||||
#define PKT_UNGARDEN 1001
|
||||
/* general control message, passed to plugins */
|
||||
#define NSCTL_REQ_CONTROL (NSCTL_REQUEST | 4)
|
||||
|
||||
int new_packet(short type, char *packet);
|
||||
int send_packet(int sockfd, int dest_ip, int dest_port, char *packet, int len);
|
||||
void dump_packet(char *packet, FILE *stream);
|
||||
int read_packet(int sockfd, char *packet);
|
||||
/* response messages */
|
||||
#define NSCTL_RESPONSE (1 << 5)
|
||||
#define NSCTL_RES_OK (NSCTL_RESPONSE | 1)
|
||||
#define NSCTL_RES_ERR (NSCTL_RESPONSE | 2)
|
||||
|
||||
/* unpack errors */
|
||||
#define NSCTL_ERR_SHORT -1 // short packet
|
||||
#define NSCTL_ERR_LONG -2 // packet exceeds max, or trailing cr*p
|
||||
#define NSCTL_ERR_MAGIC -3 // invalid magic number
|
||||
#define NSCTL_ERR_TYPE -4 // unrecognised type
|
||||
|
||||
#define NSCTL_MAX_PKT_SZ 4096
|
||||
|
||||
struct nsctl_packet {
|
||||
u16 magic;
|
||||
u8 type;
|
||||
u8 argc;
|
||||
char argv[NSCTL_MAX_PKT_SZ - 4];
|
||||
} __attribute__ ((packed));
|
||||
|
||||
#define NSCTL_MAX_ARG_SZ 512
|
||||
|
||||
struct nsctl_args {
|
||||
u8 len;
|
||||
char value[NSCTL_MAX_ARG_SZ - 1];
|
||||
} __attribute__ ((packed));
|
||||
|
||||
/* parsed packet */
|
||||
struct nsctl {
|
||||
u8 type;
|
||||
u8 argc;
|
||||
char *argv[0xff];
|
||||
};
|
||||
|
||||
int pack_control(char *data, int len, u8 type, int argc, char *argv[]);
|
||||
int unpack_control(struct nsctl *packet, char *data, int len);
|
||||
void dump_control(struct nsctl *control, FILE *stream);
|
||||
|
||||
#endif /* __CONTROL_H__ */
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue