#ifndef NETDUMPCLIENT_H #define NETDUMPCLIENT_H #include #include #include #include "netconsole.h" typedef struct _NetdumpClient NetdumpClient; #define MAGIC_SIZE 8 #define IP_ADDR_SIZE 16 /* "255:255:255:255\0" */ typedef struct { guint32 page_nr; char *data; guint32 sections_received; guint32 request_nr; guint n_timeouts; guint timeout_tag; guint timeout_delay; } OutstandingPage; struct _NetdumpClient { guint32 ip; gboolean just_reboot; guint32 outstanding_request; guint timeout_tag; guint n_timeouts; guint n_handshakes; guint timeout_delay; gboolean got_log_packet; unsigned char magic_value[MAGIC_SIZE]; /* Host data */ guint32 nr_pages; /* max page frame number */ guint32 page_size; guint64 page_offset; /* Version 5 additions */ u32 effective_version; u32 machine_type; u32 totalram_pages; u32 next_avail_page; u64 task_struct; u64 netdump_magic; unsigned char ip_addr[IP_ADDR_SIZE]; /* for syslog strings only */ gchar *regs; guint regs_len; guint32 current_page; OutstandingPage *outstanding; int n_outstanding; void (*timeout) (NetdumpClient *client, guint32 request_nr); void (*process_packet) (NetdumpClient *client, struct sockaddr_in *addr, unsigned char *buffer, int buf_len); /* Coredump data: */ int dump_fd; size_t data_offset; char *dump_dir; }; NetdumpClient *netdump_client_new (guint32 ip, const char *dir, const char magic[MAGIC_SIZE], gboolean just_reboot, reply_t *reply, char *msg); void netdump_client_destroy (NetdumpClient *client, int reboot); guint netdump_client_hash (gconstpointer key); gint netdump_client_compare (gconstpointer a, gconstpointer b); #endif