batman-adv: Convert packet.h to uapi header
The header file is used by different userspace programs to inject packets or to decode sniffed packets. It should therefore be available to them as userspace header. Also other components in the kernel (like the flow dissector) require access to the packet definitions to be able to decode ETH_P_BATMAN ethernet packets. Signed-off-by: Sven Eckelmann <sven.eckelmann@openmesh.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:

committed by
David S. Miller

parent
adbf9b7324
commit
fec149f5d3
@@ -2564,6 +2564,7 @@ S: Maintained
|
|||||||
F: Documentation/ABI/testing/sysfs-class-net-batman-adv
|
F: Documentation/ABI/testing/sysfs-class-net-batman-adv
|
||||||
F: Documentation/ABI/testing/sysfs-class-net-mesh
|
F: Documentation/ABI/testing/sysfs-class-net-mesh
|
||||||
F: Documentation/networking/batman-adv.rst
|
F: Documentation/networking/batman-adv.rst
|
||||||
|
F: include/uapi/linux/batadv_packet.h
|
||||||
F: include/uapi/linux/batman_adv.h
|
F: include/uapi/linux/batman_adv.h
|
||||||
F: net/batman-adv/
|
F: net/batman-adv/
|
||||||
|
|
||||||
|
@@ -1,4 +1,4 @@
|
|||||||
/* SPDX-License-Identifier: GPL-2.0 */
|
/* SPDX-License-Identifier: (GPL-2.0 WITH Linux-syscall-note) */
|
||||||
/* Copyright (C) 2007-2017 B.A.T.M.A.N. contributors:
|
/* Copyright (C) 2007-2017 B.A.T.M.A.N. contributors:
|
||||||
*
|
*
|
||||||
* Marek Lindner, Simon Wunderlich
|
* Marek Lindner, Simon Wunderlich
|
||||||
@@ -16,8 +16,8 @@
|
|||||||
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef _NET_BATMAN_ADV_PACKET_H_
|
#ifndef _UAPI_LINUX_BATADV_PACKET_H_
|
||||||
#define _NET_BATMAN_ADV_PACKET_H_
|
#define _UAPI_LINUX_BATADV_PACKET_H_
|
||||||
|
|
||||||
#include <asm/byteorder.h>
|
#include <asm/byteorder.h>
|
||||||
#include <linux/if_ether.h>
|
#include <linux/if_ether.h>
|
||||||
@@ -641,4 +641,4 @@ struct batadv_tvlv_mcast_data {
|
|||||||
__u8 reserved[3];
|
__u8 reserved[3];
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif /* _NET_BATMAN_ADV_PACKET_H_ */
|
#endif /* _UAPI_LINUX_BATADV_PACKET_H_ */
|
@@ -52,6 +52,7 @@
|
|||||||
#include <linux/workqueue.h>
|
#include <linux/workqueue.h>
|
||||||
#include <net/genetlink.h>
|
#include <net/genetlink.h>
|
||||||
#include <net/netlink.h>
|
#include <net/netlink.h>
|
||||||
|
#include <uapi/linux/batadv_packet.h>
|
||||||
#include <uapi/linux/batman_adv.h>
|
#include <uapi/linux/batman_adv.h>
|
||||||
|
|
||||||
#include "bat_algo.h"
|
#include "bat_algo.h"
|
||||||
@@ -63,7 +64,6 @@
|
|||||||
#include "netlink.h"
|
#include "netlink.h"
|
||||||
#include "network-coding.h"
|
#include "network-coding.h"
|
||||||
#include "originator.h"
|
#include "originator.h"
|
||||||
#include "packet.h"
|
|
||||||
#include "routing.h"
|
#include "routing.h"
|
||||||
#include "send.h"
|
#include "send.h"
|
||||||
#include "translation-table.h"
|
#include "translation-table.h"
|
||||||
|
@@ -37,6 +37,7 @@
|
|||||||
#include <linux/workqueue.h>
|
#include <linux/workqueue.h>
|
||||||
#include <net/genetlink.h>
|
#include <net/genetlink.h>
|
||||||
#include <net/netlink.h>
|
#include <net/netlink.h>
|
||||||
|
#include <uapi/linux/batadv_packet.h>
|
||||||
#include <uapi/linux/batman_adv.h>
|
#include <uapi/linux/batman_adv.h>
|
||||||
|
|
||||||
#include "bat_algo.h"
|
#include "bat_algo.h"
|
||||||
@@ -49,7 +50,6 @@
|
|||||||
#include "log.h"
|
#include "log.h"
|
||||||
#include "netlink.h"
|
#include "netlink.h"
|
||||||
#include "originator.h"
|
#include "originator.h"
|
||||||
#include "packet.h"
|
|
||||||
|
|
||||||
struct sk_buff;
|
struct sk_buff;
|
||||||
|
|
||||||
|
@@ -42,13 +42,13 @@
|
|||||||
#include <linux/types.h>
|
#include <linux/types.h>
|
||||||
#include <linux/workqueue.h>
|
#include <linux/workqueue.h>
|
||||||
#include <net/cfg80211.h>
|
#include <net/cfg80211.h>
|
||||||
|
#include <uapi/linux/batadv_packet.h>
|
||||||
|
|
||||||
#include "bat_algo.h"
|
#include "bat_algo.h"
|
||||||
#include "bat_v_ogm.h"
|
#include "bat_v_ogm.h"
|
||||||
#include "hard-interface.h"
|
#include "hard-interface.h"
|
||||||
#include "log.h"
|
#include "log.h"
|
||||||
#include "originator.h"
|
#include "originator.h"
|
||||||
#include "packet.h"
|
|
||||||
#include "routing.h"
|
#include "routing.h"
|
||||||
#include "send.h"
|
#include "send.h"
|
||||||
|
|
||||||
|
@@ -39,13 +39,13 @@
|
|||||||
#include <linux/string.h>
|
#include <linux/string.h>
|
||||||
#include <linux/types.h>
|
#include <linux/types.h>
|
||||||
#include <linux/workqueue.h>
|
#include <linux/workqueue.h>
|
||||||
|
#include <uapi/linux/batadv_packet.h>
|
||||||
|
|
||||||
#include "bat_algo.h"
|
#include "bat_algo.h"
|
||||||
#include "hard-interface.h"
|
#include "hard-interface.h"
|
||||||
#include "hash.h"
|
#include "hash.h"
|
||||||
#include "log.h"
|
#include "log.h"
|
||||||
#include "originator.h"
|
#include "originator.h"
|
||||||
#include "packet.h"
|
|
||||||
#include "routing.h"
|
#include "routing.h"
|
||||||
#include "send.h"
|
#include "send.h"
|
||||||
#include "translation-table.h"
|
#include "translation-table.h"
|
||||||
|
@@ -50,6 +50,7 @@
|
|||||||
#include <net/genetlink.h>
|
#include <net/genetlink.h>
|
||||||
#include <net/netlink.h>
|
#include <net/netlink.h>
|
||||||
#include <net/sock.h>
|
#include <net/sock.h>
|
||||||
|
#include <uapi/linux/batadv_packet.h>
|
||||||
#include <uapi/linux/batman_adv.h>
|
#include <uapi/linux/batman_adv.h>
|
||||||
|
|
||||||
#include "hard-interface.h"
|
#include "hard-interface.h"
|
||||||
@@ -57,7 +58,6 @@
|
|||||||
#include "log.h"
|
#include "log.h"
|
||||||
#include "netlink.h"
|
#include "netlink.h"
|
||||||
#include "originator.h"
|
#include "originator.h"
|
||||||
#include "packet.h"
|
|
||||||
#include "soft-interface.h"
|
#include "soft-interface.h"
|
||||||
#include "sysfs.h"
|
#include "sysfs.h"
|
||||||
#include "translation-table.h"
|
#include "translation-table.h"
|
||||||
|
@@ -24,9 +24,9 @@
|
|||||||
#include <linux/compiler.h>
|
#include <linux/compiler.h>
|
||||||
#include <linux/netdevice.h>
|
#include <linux/netdevice.h>
|
||||||
#include <linux/types.h>
|
#include <linux/types.h>
|
||||||
|
#include <uapi/linux/batadv_packet.h>
|
||||||
|
|
||||||
#include "originator.h"
|
#include "originator.h"
|
||||||
#include "packet.h"
|
|
||||||
|
|
||||||
struct seq_file;
|
struct seq_file;
|
||||||
struct sk_buff;
|
struct sk_buff;
|
||||||
|
@@ -33,10 +33,10 @@
|
|||||||
#include <linux/slab.h>
|
#include <linux/slab.h>
|
||||||
#include <linux/spinlock.h>
|
#include <linux/spinlock.h>
|
||||||
#include <linux/string.h>
|
#include <linux/string.h>
|
||||||
|
#include <uapi/linux/batadv_packet.h>
|
||||||
|
|
||||||
#include "hard-interface.h"
|
#include "hard-interface.h"
|
||||||
#include "originator.h"
|
#include "originator.h"
|
||||||
#include "packet.h"
|
|
||||||
#include "routing.h"
|
#include "routing.h"
|
||||||
#include "send.h"
|
#include "send.h"
|
||||||
#include "soft-interface.h"
|
#include "soft-interface.h"
|
||||||
|
@@ -43,6 +43,7 @@
|
|||||||
#include <linux/stddef.h>
|
#include <linux/stddef.h>
|
||||||
#include <linux/udp.h>
|
#include <linux/udp.h>
|
||||||
#include <net/sock.h>
|
#include <net/sock.h>
|
||||||
|
#include <uapi/linux/batadv_packet.h>
|
||||||
#include <uapi/linux/batman_adv.h>
|
#include <uapi/linux/batman_adv.h>
|
||||||
|
|
||||||
#include "gateway_common.h"
|
#include "gateway_common.h"
|
||||||
@@ -50,7 +51,6 @@
|
|||||||
#include "log.h"
|
#include "log.h"
|
||||||
#include "netlink.h"
|
#include "netlink.h"
|
||||||
#include "originator.h"
|
#include "originator.h"
|
||||||
#include "packet.h"
|
|
||||||
#include "routing.h"
|
#include "routing.h"
|
||||||
#include "soft-interface.h"
|
#include "soft-interface.h"
|
||||||
#include "sysfs.h"
|
#include "sysfs.h"
|
||||||
|
@@ -27,10 +27,10 @@
|
|||||||
#include <linux/netdevice.h>
|
#include <linux/netdevice.h>
|
||||||
#include <linux/stddef.h>
|
#include <linux/stddef.h>
|
||||||
#include <linux/string.h>
|
#include <linux/string.h>
|
||||||
|
#include <uapi/linux/batadv_packet.h>
|
||||||
|
|
||||||
#include "gateway_client.h"
|
#include "gateway_client.h"
|
||||||
#include "log.h"
|
#include "log.h"
|
||||||
#include "packet.h"
|
|
||||||
#include "tvlv.h"
|
#include "tvlv.h"
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@@ -38,6 +38,7 @@
|
|||||||
#include <linux/spinlock.h>
|
#include <linux/spinlock.h>
|
||||||
#include <net/net_namespace.h>
|
#include <net/net_namespace.h>
|
||||||
#include <net/rtnetlink.h>
|
#include <net/rtnetlink.h>
|
||||||
|
#include <uapi/linux/batadv_packet.h>
|
||||||
|
|
||||||
#include "bat_v.h"
|
#include "bat_v.h"
|
||||||
#include "bridge_loop_avoidance.h"
|
#include "bridge_loop_avoidance.h"
|
||||||
@@ -46,7 +47,6 @@
|
|||||||
#include "gateway_client.h"
|
#include "gateway_client.h"
|
||||||
#include "log.h"
|
#include "log.h"
|
||||||
#include "originator.h"
|
#include "originator.h"
|
||||||
#include "packet.h"
|
|
||||||
#include "send.h"
|
#include "send.h"
|
||||||
#include "soft-interface.h"
|
#include "soft-interface.h"
|
||||||
#include "sysfs.h"
|
#include "sysfs.h"
|
||||||
|
@@ -44,11 +44,11 @@
|
|||||||
#include <linux/string.h>
|
#include <linux/string.h>
|
||||||
#include <linux/uaccess.h>
|
#include <linux/uaccess.h>
|
||||||
#include <linux/wait.h>
|
#include <linux/wait.h>
|
||||||
|
#include <uapi/linux/batadv_packet.h>
|
||||||
|
|
||||||
#include "hard-interface.h"
|
#include "hard-interface.h"
|
||||||
#include "log.h"
|
#include "log.h"
|
||||||
#include "originator.h"
|
#include "originator.h"
|
||||||
#include "packet.h"
|
|
||||||
#include "send.h"
|
#include "send.h"
|
||||||
|
|
||||||
static struct batadv_socket_client *batadv_socket_client_hash[256];
|
static struct batadv_socket_client *batadv_socket_client_hash[256];
|
||||||
|
@@ -46,6 +46,7 @@
|
|||||||
#include <linux/workqueue.h>
|
#include <linux/workqueue.h>
|
||||||
#include <net/dsfield.h>
|
#include <net/dsfield.h>
|
||||||
#include <net/rtnetlink.h>
|
#include <net/rtnetlink.h>
|
||||||
|
#include <uapi/linux/batadv_packet.h>
|
||||||
#include <uapi/linux/batman_adv.h>
|
#include <uapi/linux/batman_adv.h>
|
||||||
|
|
||||||
#include "bat_algo.h"
|
#include "bat_algo.h"
|
||||||
@@ -63,7 +64,6 @@
|
|||||||
#include "netlink.h"
|
#include "netlink.h"
|
||||||
#include "network-coding.h"
|
#include "network-coding.h"
|
||||||
#include "originator.h"
|
#include "originator.h"
|
||||||
#include "packet.h"
|
|
||||||
#include "routing.h"
|
#include "routing.h"
|
||||||
#include "send.h"
|
#include "send.h"
|
||||||
#include "soft-interface.h"
|
#include "soft-interface.h"
|
||||||
|
@@ -223,8 +223,8 @@ enum batadv_uev_type {
|
|||||||
#include <linux/jiffies.h>
|
#include <linux/jiffies.h>
|
||||||
#include <linux/percpu.h>
|
#include <linux/percpu.h>
|
||||||
#include <linux/types.h>
|
#include <linux/types.h>
|
||||||
|
#include <uapi/linux/batadv_packet.h>
|
||||||
|
|
||||||
#include "packet.h"
|
|
||||||
#include "types.h"
|
#include "types.h"
|
||||||
|
|
||||||
struct net_device;
|
struct net_device;
|
||||||
|
@@ -55,11 +55,11 @@
|
|||||||
#include <net/if_inet6.h>
|
#include <net/if_inet6.h>
|
||||||
#include <net/ip.h>
|
#include <net/ip.h>
|
||||||
#include <net/ipv6.h>
|
#include <net/ipv6.h>
|
||||||
|
#include <uapi/linux/batadv_packet.h>
|
||||||
|
|
||||||
#include "hard-interface.h"
|
#include "hard-interface.h"
|
||||||
#include "hash.h"
|
#include "hash.h"
|
||||||
#include "log.h"
|
#include "log.h"
|
||||||
#include "packet.h"
|
|
||||||
#include "translation-table.h"
|
#include "translation-table.h"
|
||||||
#include "tvlv.h"
|
#include "tvlv.h"
|
||||||
|
|
||||||
|
@@ -40,6 +40,7 @@
|
|||||||
#include <net/genetlink.h>
|
#include <net/genetlink.h>
|
||||||
#include <net/netlink.h>
|
#include <net/netlink.h>
|
||||||
#include <net/sock.h>
|
#include <net/sock.h>
|
||||||
|
#include <uapi/linux/batadv_packet.h>
|
||||||
#include <uapi/linux/batman_adv.h>
|
#include <uapi/linux/batman_adv.h>
|
||||||
|
|
||||||
#include "bat_algo.h"
|
#include "bat_algo.h"
|
||||||
@@ -47,7 +48,6 @@
|
|||||||
#include "gateway_client.h"
|
#include "gateway_client.h"
|
||||||
#include "hard-interface.h"
|
#include "hard-interface.h"
|
||||||
#include "originator.h"
|
#include "originator.h"
|
||||||
#include "packet.h"
|
|
||||||
#include "soft-interface.h"
|
#include "soft-interface.h"
|
||||||
#include "tp_meter.h"
|
#include "tp_meter.h"
|
||||||
#include "translation-table.h"
|
#include "translation-table.h"
|
||||||
|
@@ -49,12 +49,12 @@
|
|||||||
#include <linux/stddef.h>
|
#include <linux/stddef.h>
|
||||||
#include <linux/string.h>
|
#include <linux/string.h>
|
||||||
#include <linux/workqueue.h>
|
#include <linux/workqueue.h>
|
||||||
|
#include <uapi/linux/batadv_packet.h>
|
||||||
|
|
||||||
#include "hard-interface.h"
|
#include "hard-interface.h"
|
||||||
#include "hash.h"
|
#include "hash.h"
|
||||||
#include "log.h"
|
#include "log.h"
|
||||||
#include "originator.h"
|
#include "originator.h"
|
||||||
#include "packet.h"
|
|
||||||
#include "routing.h"
|
#include "routing.h"
|
||||||
#include "send.h"
|
#include "send.h"
|
||||||
#include "tvlv.h"
|
#include "tvlv.h"
|
||||||
|
@@ -34,6 +34,7 @@
|
|||||||
#include <linux/skbuff.h>
|
#include <linux/skbuff.h>
|
||||||
#include <linux/spinlock.h>
|
#include <linux/spinlock.h>
|
||||||
#include <linux/stddef.h>
|
#include <linux/stddef.h>
|
||||||
|
#include <uapi/linux/batadv_packet.h>
|
||||||
|
|
||||||
#include "bitarray.h"
|
#include "bitarray.h"
|
||||||
#include "bridge_loop_avoidance.h"
|
#include "bridge_loop_avoidance.h"
|
||||||
@@ -44,7 +45,6 @@
|
|||||||
#include "log.h"
|
#include "log.h"
|
||||||
#include "network-coding.h"
|
#include "network-coding.h"
|
||||||
#include "originator.h"
|
#include "originator.h"
|
||||||
#include "packet.h"
|
|
||||||
#include "send.h"
|
#include "send.h"
|
||||||
#include "soft-interface.h"
|
#include "soft-interface.h"
|
||||||
#include "tp_meter.h"
|
#include "tp_meter.h"
|
||||||
|
@@ -24,8 +24,7 @@
|
|||||||
#include <linux/compiler.h>
|
#include <linux/compiler.h>
|
||||||
#include <linux/spinlock.h>
|
#include <linux/spinlock.h>
|
||||||
#include <linux/types.h>
|
#include <linux/types.h>
|
||||||
|
#include <uapi/linux/batadv_packet.h>
|
||||||
#include "packet.h"
|
|
||||||
|
|
||||||
struct sk_buff;
|
struct sk_buff;
|
||||||
|
|
||||||
|
@@ -49,6 +49,7 @@
|
|||||||
#include <linux/stddef.h>
|
#include <linux/stddef.h>
|
||||||
#include <linux/string.h>
|
#include <linux/string.h>
|
||||||
#include <linux/types.h>
|
#include <linux/types.h>
|
||||||
|
#include <uapi/linux/batadv_packet.h>
|
||||||
|
|
||||||
#include "bat_algo.h"
|
#include "bat_algo.h"
|
||||||
#include "bridge_loop_avoidance.h"
|
#include "bridge_loop_avoidance.h"
|
||||||
@@ -60,7 +61,6 @@
|
|||||||
#include "multicast.h"
|
#include "multicast.h"
|
||||||
#include "network-coding.h"
|
#include "network-coding.h"
|
||||||
#include "originator.h"
|
#include "originator.h"
|
||||||
#include "packet.h"
|
|
||||||
#include "send.h"
|
#include "send.h"
|
||||||
#include "sysfs.h"
|
#include "sysfs.h"
|
||||||
#include "translation-table.h"
|
#include "translation-table.h"
|
||||||
|
@@ -39,6 +39,7 @@
|
|||||||
#include <linux/string.h>
|
#include <linux/string.h>
|
||||||
#include <linux/stringify.h>
|
#include <linux/stringify.h>
|
||||||
#include <linux/workqueue.h>
|
#include <linux/workqueue.h>
|
||||||
|
#include <uapi/linux/batadv_packet.h>
|
||||||
|
|
||||||
#include "bridge_loop_avoidance.h"
|
#include "bridge_loop_avoidance.h"
|
||||||
#include "distributed-arp-table.h"
|
#include "distributed-arp-table.h"
|
||||||
@@ -47,7 +48,6 @@
|
|||||||
#include "hard-interface.h"
|
#include "hard-interface.h"
|
||||||
#include "log.h"
|
#include "log.h"
|
||||||
#include "network-coding.h"
|
#include "network-coding.h"
|
||||||
#include "packet.h"
|
|
||||||
#include "soft-interface.h"
|
#include "soft-interface.h"
|
||||||
|
|
||||||
static struct net_device *batadv_kobj_to_netdev(struct kobject *obj)
|
static struct net_device *batadv_kobj_to_netdev(struct kobject *obj)
|
||||||
|
@@ -49,13 +49,13 @@
|
|||||||
#include <linux/timer.h>
|
#include <linux/timer.h>
|
||||||
#include <linux/wait.h>
|
#include <linux/wait.h>
|
||||||
#include <linux/workqueue.h>
|
#include <linux/workqueue.h>
|
||||||
|
#include <uapi/linux/batadv_packet.h>
|
||||||
#include <uapi/linux/batman_adv.h>
|
#include <uapi/linux/batman_adv.h>
|
||||||
|
|
||||||
#include "hard-interface.h"
|
#include "hard-interface.h"
|
||||||
#include "log.h"
|
#include "log.h"
|
||||||
#include "netlink.h"
|
#include "netlink.h"
|
||||||
#include "originator.h"
|
#include "originator.h"
|
||||||
#include "packet.h"
|
|
||||||
#include "send.h"
|
#include "send.h"
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@@ -52,6 +52,7 @@
|
|||||||
#include <net/genetlink.h>
|
#include <net/genetlink.h>
|
||||||
#include <net/netlink.h>
|
#include <net/netlink.h>
|
||||||
#include <net/sock.h>
|
#include <net/sock.h>
|
||||||
|
#include <uapi/linux/batadv_packet.h>
|
||||||
#include <uapi/linux/batman_adv.h>
|
#include <uapi/linux/batman_adv.h>
|
||||||
|
|
||||||
#include "bridge_loop_avoidance.h"
|
#include "bridge_loop_avoidance.h"
|
||||||
@@ -60,7 +61,6 @@
|
|||||||
#include "log.h"
|
#include "log.h"
|
||||||
#include "netlink.h"
|
#include "netlink.h"
|
||||||
#include "originator.h"
|
#include "originator.h"
|
||||||
#include "packet.h"
|
|
||||||
#include "soft-interface.h"
|
#include "soft-interface.h"
|
||||||
#include "tvlv.h"
|
#include "tvlv.h"
|
||||||
|
|
||||||
|
@@ -36,9 +36,9 @@
|
|||||||
#include <linux/stddef.h>
|
#include <linux/stddef.h>
|
||||||
#include <linux/string.h>
|
#include <linux/string.h>
|
||||||
#include <linux/types.h>
|
#include <linux/types.h>
|
||||||
|
#include <uapi/linux/batadv_packet.h>
|
||||||
|
|
||||||
#include "originator.h"
|
#include "originator.h"
|
||||||
#include "packet.h"
|
|
||||||
#include "send.h"
|
#include "send.h"
|
||||||
#include "tvlv.h"
|
#include "tvlv.h"
|
||||||
|
|
||||||
|
@@ -35,10 +35,9 @@
|
|||||||
#include <linux/types.h>
|
#include <linux/types.h>
|
||||||
#include <linux/wait.h>
|
#include <linux/wait.h>
|
||||||
#include <linux/workqueue.h>
|
#include <linux/workqueue.h>
|
||||||
|
#include <uapi/linux/batadv_packet.h>
|
||||||
#include <uapi/linux/batman_adv.h>
|
#include <uapi/linux/batman_adv.h>
|
||||||
|
|
||||||
#include "packet.h"
|
|
||||||
|
|
||||||
struct seq_file;
|
struct seq_file;
|
||||||
|
|
||||||
#ifdef CONFIG_BATMAN_ADV_DAT
|
#ifdef CONFIG_BATMAN_ADV_DAT
|
||||||
|
Reference in New Issue
Block a user