Changeset View
Changeset View
Standalone View
Standalone View
sbin/ifconfig/ifconfig.h
Show All 40 Lines | |||||
#include <libifconfig.h> | #include <libifconfig.h> | ||||
#define __constructor __attribute__((constructor)) | #define __constructor __attribute__((constructor)) | ||||
struct afswtch; | struct afswtch; | ||||
struct cmd; | struct cmd; | ||||
typedef void c_func(const char *cmd, int arg, int s, const struct afswtch *afp); | typedef void c_func(const char *cmd, int arg, int s, const struct afswtch *afp); | ||||
typedef void c_func2(const char *arg1, const char *arg2, int s, const struct afswtch *afp); | typedef void c_func2(const char *arg1, const char *arg2, int s, | ||||
const struct afswtch *afp); | |||||
typedef void c_func3(const char *cmd, const char *arg, int s, | |||||
const struct afswtch *afp); | |||||
struct cmd { | struct cmd { | ||||
const char *c_name; | const char *c_name; | ||||
int c_parameter; | int c_parameter; | ||||
#define NEXTARG 0xffffff /* has following arg */ | #define NEXTARG 0xffffff /* has following arg */ | ||||
#define NEXTARG2 0xfffffe /* has 2 following args */ | #define NEXTARG2 0xfffffe /* has 2 following args */ | ||||
#define OPTARG 0xfffffd /* has optional following arg */ | #define OPTARG 0xfffffd /* has optional following arg */ | ||||
#define SPARAM 0xfffffc /* parameter is string c_sparameter */ | |||||
const char *c_sparameter; | |||||
union { | union { | ||||
c_func *c_func; | c_func *c_func; | ||||
c_func2 *c_func2; | c_func2 *c_func2; | ||||
c_func3 *c_func3; | |||||
} c_u; | } c_u; | ||||
int c_iscloneop; | int c_iscloneop; | ||||
struct cmd *c_next; | struct cmd *c_next; | ||||
}; | }; | ||||
void cmd_register(struct cmd *); | void cmd_register(struct cmd *); | ||||
typedef void callback_func(int s, void *); | typedef void callback_func(int s, void *); | ||||
void callback_register(callback_func *, void *); | void callback_register(callback_func *, void *); | ||||
/* | /* | ||||
* Macros for declaring command functions and initializing entries. | * Macros for declaring command functions and initializing entries. | ||||
*/ | */ | ||||
#define DECL_CMD_FUNC(name, cmd, arg) \ | #define DECL_CMD_FUNC(name, cmd, arg) \ | ||||
void name(const char *cmd, int arg, int s, const struct afswtch *afp) | void name(const char *cmd, int arg, int s, const struct afswtch *afp) | ||||
#define DECL_CMD_FUNC2(name, arg1, arg2) \ | #define DECL_CMD_FUNC2(name, arg1, arg2) \ | ||||
void name(const char *arg1, const char *arg2, int s, const struct afswtch *afp) | void name(const char *arg1, const char *arg2, int s, \ | ||||
const struct afswtch *afp) | |||||
#define DEF_CMD(name, param, func) { name, param, { .c_func = func }, 0, NULL } | #define DEF_CMD(name, param, func) { \ | ||||
#define DEF_CMD_ARG(name, func) { name, NEXTARG, { .c_func = func }, 0, NULL } | .c_name = (name), \ | ||||
#define DEF_CMD_OPTARG(name, func) { name, OPTARG, { .c_func = func }, 0, NULL } | .c_parameter = (param), \ | ||||
#define DEF_CMD_ARG2(name, func) { name, NEXTARG2, { .c_func2 = func }, 0, NULL } | .c_u = { .c_func = (func) }, \ | ||||
#define DEF_CLONE_CMD(name, param, func) { name, param, { .c_func = func }, 1, NULL } | .c_iscloneop = 0, \ | ||||
#define DEF_CLONE_CMD_ARG(name, func) { name, NEXTARG, { .c_func = func }, 1, NULL } | .c_next = NULL, \ | ||||
#define DEF_CLONE_CMD_ARG2(name, func) { name, NEXTARG2, { .c_func2 = func }, 1, NULL } | } | ||||
#define DEF_CMD_ARG(name, func) { \ | |||||
.c_name = (name), \ | |||||
.c_parameter = NEXTARG, \ | |||||
.c_u = { .c_func = (func) }, \ | |||||
.c_iscloneop = 0, \ | |||||
.c_next = NULL, \ | |||||
} | |||||
#define DEF_CMD_OPTARG(name, func) { \ | |||||
.c_name = (name), \ | |||||
.c_parameter = OPTARG, \ | |||||
.c_u = { .c_func = (func) }, \ | |||||
.c_iscloneop = 0, \ | |||||
.c_next = NULL, \ | |||||
} | |||||
#define DEF_CMD_ARG2(name, func) { \ | |||||
.c_name = (name), \ | |||||
.c_parameter = NEXTARG2, \ | |||||
.c_u = { .c_func2 = (func) }, \ | |||||
.c_iscloneop = 0, \ | |||||
.c_next = NULL, \ | |||||
} | |||||
#define DEF_CMD_SARG(name, sparam, func) { \ | |||||
.c_name = (name), \ | |||||
.c_parameter = SPARAM, \ | |||||
.c_sparameter = (sparam), \ | |||||
.c_u = { .c_func3 = (func) }, \ | |||||
.c_iscloneop = 0, \ | |||||
.c_next = NULL, \ | |||||
} | |||||
#define DEF_CLONE_CMD(name, param, func) { \ | |||||
.c_name = (name), \ | |||||
.c_parameter = (param), \ | |||||
.c_u = { .c_func = (func) }, \ | |||||
.c_iscloneop = 1, \ | |||||
.c_next = NULL, \ | |||||
} | |||||
#define DEF_CLONE_CMD_ARG(name, func) { \ | |||||
.c_name = (name), \ | |||||
.c_parameter = NEXTARG, \ | |||||
.c_u = { .c_func = (func) }, \ | |||||
.c_iscloneop = 1, \ | |||||
.c_next = NULL, \ | |||||
} | |||||
#define DEF_CLONE_CMD_ARG2(name, func) { \ | |||||
.c_name = (name), \ | |||||
.c_parameter = NEXTARG2, \ | |||||
.c_u = { .c_func2 = (func) }, \ | |||||
.c_iscloneop = 1, \ | |||||
.c_next = NULL, \ | |||||
} | |||||
struct ifaddrs; | struct ifaddrs; | ||||
struct addrinfo; | struct addrinfo; | ||||
enum { | enum { | ||||
RIDADDR, | RIDADDR, | ||||
ADDR, | ADDR, | ||||
MASK, | MASK, | ||||
▲ Show 20 Lines • Show All 48 Lines • ▼ Show 20 Lines | |||||
extern int supmedia; | extern int supmedia; | ||||
extern int printkeys; | extern int printkeys; | ||||
extern int newaddr; | extern int newaddr; | ||||
extern int verbose; | extern int verbose; | ||||
extern int printifname; | extern int printifname; | ||||
extern int exit_code; | extern int exit_code; | ||||
void setifcap(const char *, int value, int s, const struct afswtch *); | void setifcap(const char *, int value, int s, const struct afswtch *); | ||||
void setifcapnv(const char *vname, const char *arg, int s, | |||||
const struct afswtch *afp); | |||||
void Perror(const char *cmd); | void Perror(const char *cmd); | ||||
void printb(const char *s, unsigned value, const char *bits); | void printb(const char *s, unsigned value, const char *bits); | ||||
void ifmaybeload(const char *name); | void ifmaybeload(const char *name); | ||||
typedef int clone_match_func(const char *); | typedef int clone_match_func(const char *); | ||||
typedef void clone_callback_func(int, struct ifreq *); | typedef void clone_callback_func(int, struct ifreq *); | ||||
Show All 14 Lines |