This patch adds a dlm functionality to send a raw dlm message to a specific cluster node. This raw message can be build by user space and send out by writing the message to "rawmsg" dlm debugfs file. There is a in progress scapy dlm module which provides a easy build of DLM messages in user space. For example: DLM(h_cmd=3, o_nextcmd=1, h_nodeid=1, h_lockspace=0xe4f48a18, ...) The goal is to provide an easy reproducable state to crash DLM or to fuzz the DLM kernel stack if there are possible ways to crash it. Note: that if the sequence number is zero and dlm version is not set to 3.1 the kernel will automatic will set a right sequence number, otherwise DLM stack testing is not possible. Signed-off-by: Alexander Aring <aahringo@redhat.com> Signed-off-by: David Teigland <teigland@redhat.com>
36 lines
1.4 KiB
C
36 lines
1.4 KiB
C
/* SPDX-License-Identifier: GPL-2.0-only */
|
|
/******************************************************************************
|
|
*******************************************************************************
|
|
**
|
|
** Copyright (C) Sistina Software, Inc. 1997-2003 All rights reserved.
|
|
** Copyright (C) 2004-2005 Red Hat, Inc. All rights reserved.
|
|
**
|
|
**
|
|
*******************************************************************************
|
|
******************************************************************************/
|
|
|
|
#ifndef __MIDCOMMS_DOT_H__
|
|
#define __MIDCOMMS_DOT_H__
|
|
|
|
struct midcomms_node;
|
|
|
|
int dlm_process_incoming_buffer(int nodeid, unsigned char *buf, int buflen);
|
|
struct dlm_mhandle *dlm_midcomms_get_mhandle(int nodeid, int len,
|
|
gfp_t allocation, char **ppc);
|
|
void dlm_midcomms_commit_mhandle(struct dlm_mhandle *mh);
|
|
int dlm_midcomms_close(int nodeid);
|
|
int dlm_midcomms_start(void);
|
|
void dlm_midcomms_shutdown(void);
|
|
void dlm_midcomms_add_member(int nodeid);
|
|
void dlm_midcomms_remove_member(int nodeid);
|
|
void dlm_midcomms_unack_msg_resend(int nodeid);
|
|
const char *dlm_midcomms_state(struct midcomms_node *node);
|
|
unsigned long dlm_midcomms_flags(struct midcomms_node *node);
|
|
int dlm_midcomms_send_queue_cnt(struct midcomms_node *node);
|
|
uint32_t dlm_midcomms_version(struct midcomms_node *node);
|
|
int dlm_midcomms_rawmsg_send(struct midcomms_node *node, void *buf,
|
|
int buflen);
|
|
|
|
#endif /* __MIDCOMMS_DOT_H__ */
|
|
|