Changeset View
Changeset View
Standalone View
Standalone View
sys/netinet/netdump/netdump.h
Show All 31 Lines | |||||
#include <sys/types.h> | #include <sys/types.h> | ||||
#include <sys/disk.h> | #include <sys/disk.h> | ||||
#include <sys/ioccom.h> | #include <sys/ioccom.h> | ||||
#include <net/if.h> | #include <net/if.h> | ||||
#include <netinet/in.h> | #include <netinet/in.h> | ||||
/* Netdump wire protocol definitions are consumed by the ftp/netdumpd port. */ | |||||
#define NETDUMP_PORT 20023 /* Server UDP port for heralds. */ | #define NETDUMP_PORT 20023 /* Server UDP port for heralds. */ | ||||
#define NETDUMP_ACKPORT 20024 /* Client UDP port for acks. */ | #define NETDUMP_ACKPORT 20024 /* Client UDP port for acks. */ | ||||
#define NETDUMP_HERALD 1 /* Broadcast before starting a dump. */ | #define NETDUMP_HERALD DEBUGNET_HERALD | ||||
#define NETDUMP_FINISHED 2 /* Send after finishing a dump. */ | #define NETDUMP_FINISHED DEBUGNET_FINISHED | ||||
#define NETDUMP_VMCORE 3 /* Contains dump data. */ | #define NETDUMP_VMCORE DEBUGNET_DATA | ||||
#define NETDUMP_KDH 4 /* Contains kernel dump header. */ | #define NETDUMP_KDH 4 /* Contains kernel dump header. */ | ||||
#define NETDUMP_EKCD_KEY 5 /* Contains kernel dump key. */ | #define NETDUMP_EKCD_KEY 5 /* Contains kernel dump key. */ | ||||
#define NETDUMP_DATASIZE 4096 /* Arbitrary packet size limit. */ | #define NETDUMP_DATASIZE 4096 /* Arbitrary packet size limit. */ | ||||
struct netdump_msg_hdr { | /* For netdumpd. */ | ||||
uint32_t mh_type; /* Netdump message type. */ | #ifndef _KERNEL | ||||
uint32_t mh_seqno; /* Match acks with msgs. */ | #define netdump_msg_hdr debugnet_msg_hdr | ||||
uint64_t mh_offset; /* vmcore offset (bytes). */ | #define mh__pad mh_aux2 | ||||
uint32_t mh_len; /* Attached data (bytes). */ | #define netdump_ack debugnet_ack | ||||
uint32_t mh__pad; | #define na_seqno da_seqno | ||||
} __packed; | #endif /* !_KERNEL */ | ||||
struct netdump_ack { | |||||
uint32_t na_seqno; /* Match acks with msgs. */ | |||||
} __packed; | |||||
struct netdump_conf_freebsd12 { | struct netdump_conf_freebsd12 { | ||||
struct diocskerneldump_arg_freebsd12 ndc12_kda; | struct diocskerneldump_arg_freebsd12 ndc12_kda; | ||||
char ndc12_iface[IFNAMSIZ]; | char ndc12_iface[IFNAMSIZ]; | ||||
struct in_addr ndc12_server; | struct in_addr ndc12_server; | ||||
struct in_addr ndc12_client; | struct in_addr ndc12_client; | ||||
struct in_addr ndc12_gateway; | struct in_addr ndc12_gateway; | ||||
}; | }; | ||||
#define NETDUMPGCONF_FREEBSD12 _IOR('n', 1, struct netdump_conf_freebsd12) | #define NETDUMPGCONF_FREEBSD12 _IOR('n', 1, struct netdump_conf_freebsd12) | ||||
#define NETDUMPSCONF_FREEBSD12 _IOW('n', 2, struct netdump_conf_freebsd12) | #define NETDUMPSCONF_FREEBSD12 _IOW('n', 2, struct netdump_conf_freebsd12) | ||||
#define _PATH_NETDUMP "/dev/netdump" | #define _PATH_NETDUMP "/dev/netdump" | ||||
#ifdef _KERNEL | |||||
#ifdef NETDUMP | |||||
#define NETDUMP_MAX_IN_FLIGHT 64 | |||||
enum netdump_ev { | |||||
NETDUMP_START, | |||||
NETDUMP_END, | |||||
}; | |||||
struct ifnet; | |||||
struct mbuf; | |||||
void netdump_reinit(struct ifnet *); | |||||
typedef void netdump_init_t(struct ifnet *, int *nrxr, int *ncl, int *clsize); | |||||
typedef void netdump_event_t(struct ifnet *, enum netdump_ev); | |||||
typedef int netdump_transmit_t(struct ifnet *, struct mbuf *); | |||||
typedef int netdump_poll_t(struct ifnet *, int); | |||||
struct netdump_methods { | |||||
netdump_init_t *nd_init; | |||||
netdump_event_t *nd_event; | |||||
netdump_transmit_t *nd_transmit; | |||||
netdump_poll_t *nd_poll; | |||||
}; | |||||
#define NETDUMP_DEFINE(driver) \ | |||||
static netdump_init_t driver##_netdump_init; \ | |||||
static netdump_event_t driver##_netdump_event; \ | |||||
static netdump_transmit_t driver##_netdump_transmit; \ | |||||
static netdump_poll_t driver##_netdump_poll; \ | |||||
\ | |||||
static struct netdump_methods driver##_netdump_methods = { \ | |||||
.nd_init = driver##_netdump_init, \ | |||||
.nd_event = driver##_netdump_event, \ | |||||
.nd_transmit = driver##_netdump_transmit, \ | |||||
.nd_poll = driver##_netdump_poll, \ | |||||
} | |||||
#define NETDUMP_REINIT(ifp) netdump_reinit(ifp) | |||||
#define NETDUMP_SET(ifp, driver) \ | |||||
(ifp)->if_netdump_methods = &driver##_netdump_methods | |||||
#else /* !NETDUMP */ | |||||
#define NETDUMP_DEFINE(driver) | |||||
#define NETDUMP_REINIT(ifp) | |||||
#define NETDUMP_SET(ifp, driver) | |||||
#endif /* NETDUMP */ | |||||
#endif /* _KERNEL */ | |||||
#endif /* _NETINET_NETDUMP_H_ */ | #endif /* _NETINET_NETDUMP_H_ */ |