mirror of
				https://github.com/torvalds/linux.git
				synced 2025-11-04 02:30:34 +02:00 
			
		
		
		
	checkpatch gets confused and treats __attribute__ as a function call.
It complains about white space before "(":
WARNING:SPACING: space prohibited between function name and open parenthesis '('
+	struct netdev_queue_get_rsp obj __attribute__ ((aligned (8)));
No spaces wins in the kernel:
  $ git grep 'attribute__((.*aligned(' | wc -l
  480
  $ git grep 'attribute__ ((.*aligned (' | wc -l
  110
  $ git grep 'attribute__ ((.*aligned(' | wc -l
  94
  $ git grep 'attribute__((.*aligned (' | wc -l
  63
So, whatever, change the codegen.
Note that checkpatch also thinks we should use __aligned(),
but this is user space code.
Link: https://lore.kernel.org/all/202310190900.9Dzgkbev-lkp@intel.com/
Acked-by: Stanislav Fomichev <sdf@google.com>
Reviewed-by: Amritha Nambiar <amritha.nambiar@intel.com>
Reviewed-by: Jiri Pirko <jiri@nvidia.com>
Link: https://lore.kernel.org/r/20231020221827.3436697-1-kuba@kernel.org
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
		
	
			
		
			
				
	
	
		
			343 lines
		
	
	
	
		
			7.7 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			343 lines
		
	
	
	
		
			7.7 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
/* SPDX-License-Identifier: ((GPL-2.0 WITH Linux-syscall-note) OR BSD-3-Clause) */
 | 
						|
/* Do not edit directly, auto-generated from: */
 | 
						|
/*	Documentation/netlink/specs/fou.yaml */
 | 
						|
/* YNL-GEN user header */
 | 
						|
 | 
						|
#ifndef _LINUX_FOU_GEN_H
 | 
						|
#define _LINUX_FOU_GEN_H
 | 
						|
 | 
						|
#include <stdlib.h>
 | 
						|
#include <string.h>
 | 
						|
#include <linux/types.h>
 | 
						|
#include <linux/fou.h>
 | 
						|
 | 
						|
struct ynl_sock;
 | 
						|
 | 
						|
extern const struct ynl_family ynl_fou_family;
 | 
						|
 | 
						|
/* Enums */
 | 
						|
const char *fou_op_str(int op);
 | 
						|
const char *fou_encap_type_str(int value);
 | 
						|
 | 
						|
/* Common nested types */
 | 
						|
/* ============== FOU_CMD_ADD ============== */
 | 
						|
/* FOU_CMD_ADD - do */
 | 
						|
struct fou_add_req {
 | 
						|
	struct {
 | 
						|
		__u32 port:1;
 | 
						|
		__u32 ipproto:1;
 | 
						|
		__u32 type:1;
 | 
						|
		__u32 remcsum_nopartial:1;
 | 
						|
		__u32 local_v4:1;
 | 
						|
		__u32 peer_v4:1;
 | 
						|
		__u32 local_v6_len;
 | 
						|
		__u32 peer_v6_len;
 | 
						|
		__u32 peer_port:1;
 | 
						|
		__u32 ifindex:1;
 | 
						|
	} _present;
 | 
						|
 | 
						|
	__u16 port /* big-endian */;
 | 
						|
	__u8 ipproto;
 | 
						|
	__u8 type;
 | 
						|
	__u32 local_v4;
 | 
						|
	__u32 peer_v4;
 | 
						|
	void *local_v6;
 | 
						|
	void *peer_v6;
 | 
						|
	__u16 peer_port /* big-endian */;
 | 
						|
	__s32 ifindex;
 | 
						|
};
 | 
						|
 | 
						|
static inline struct fou_add_req *fou_add_req_alloc(void)
 | 
						|
{
 | 
						|
	return calloc(1, sizeof(struct fou_add_req));
 | 
						|
}
 | 
						|
void fou_add_req_free(struct fou_add_req *req);
 | 
						|
 | 
						|
static inline void
 | 
						|
fou_add_req_set_port(struct fou_add_req *req, __u16 port /* big-endian */)
 | 
						|
{
 | 
						|
	req->_present.port = 1;
 | 
						|
	req->port = port;
 | 
						|
}
 | 
						|
static inline void
 | 
						|
fou_add_req_set_ipproto(struct fou_add_req *req, __u8 ipproto)
 | 
						|
{
 | 
						|
	req->_present.ipproto = 1;
 | 
						|
	req->ipproto = ipproto;
 | 
						|
}
 | 
						|
static inline void fou_add_req_set_type(struct fou_add_req *req, __u8 type)
 | 
						|
{
 | 
						|
	req->_present.type = 1;
 | 
						|
	req->type = type;
 | 
						|
}
 | 
						|
static inline void fou_add_req_set_remcsum_nopartial(struct fou_add_req *req)
 | 
						|
{
 | 
						|
	req->_present.remcsum_nopartial = 1;
 | 
						|
}
 | 
						|
static inline void
 | 
						|
fou_add_req_set_local_v4(struct fou_add_req *req, __u32 local_v4)
 | 
						|
{
 | 
						|
	req->_present.local_v4 = 1;
 | 
						|
	req->local_v4 = local_v4;
 | 
						|
}
 | 
						|
static inline void
 | 
						|
fou_add_req_set_peer_v4(struct fou_add_req *req, __u32 peer_v4)
 | 
						|
{
 | 
						|
	req->_present.peer_v4 = 1;
 | 
						|
	req->peer_v4 = peer_v4;
 | 
						|
}
 | 
						|
static inline void
 | 
						|
fou_add_req_set_local_v6(struct fou_add_req *req, const void *local_v6,
 | 
						|
			 size_t len)
 | 
						|
{
 | 
						|
	free(req->local_v6);
 | 
						|
	req->_present.local_v6_len = len;
 | 
						|
	req->local_v6 = malloc(req->_present.local_v6_len);
 | 
						|
	memcpy(req->local_v6, local_v6, req->_present.local_v6_len);
 | 
						|
}
 | 
						|
static inline void
 | 
						|
fou_add_req_set_peer_v6(struct fou_add_req *req, const void *peer_v6,
 | 
						|
			size_t len)
 | 
						|
{
 | 
						|
	free(req->peer_v6);
 | 
						|
	req->_present.peer_v6_len = len;
 | 
						|
	req->peer_v6 = malloc(req->_present.peer_v6_len);
 | 
						|
	memcpy(req->peer_v6, peer_v6, req->_present.peer_v6_len);
 | 
						|
}
 | 
						|
static inline void
 | 
						|
fou_add_req_set_peer_port(struct fou_add_req *req,
 | 
						|
			  __u16 peer_port /* big-endian */)
 | 
						|
{
 | 
						|
	req->_present.peer_port = 1;
 | 
						|
	req->peer_port = peer_port;
 | 
						|
}
 | 
						|
static inline void
 | 
						|
fou_add_req_set_ifindex(struct fou_add_req *req, __s32 ifindex)
 | 
						|
{
 | 
						|
	req->_present.ifindex = 1;
 | 
						|
	req->ifindex = ifindex;
 | 
						|
}
 | 
						|
 | 
						|
/*
 | 
						|
 * Add port.
 | 
						|
 */
 | 
						|
int fou_add(struct ynl_sock *ys, struct fou_add_req *req);
 | 
						|
 | 
						|
/* ============== FOU_CMD_DEL ============== */
 | 
						|
/* FOU_CMD_DEL - do */
 | 
						|
struct fou_del_req {
 | 
						|
	struct {
 | 
						|
		__u32 af:1;
 | 
						|
		__u32 ifindex:1;
 | 
						|
		__u32 port:1;
 | 
						|
		__u32 peer_port:1;
 | 
						|
		__u32 local_v4:1;
 | 
						|
		__u32 peer_v4:1;
 | 
						|
		__u32 local_v6_len;
 | 
						|
		__u32 peer_v6_len;
 | 
						|
	} _present;
 | 
						|
 | 
						|
	__u8 af;
 | 
						|
	__s32 ifindex;
 | 
						|
	__u16 port /* big-endian */;
 | 
						|
	__u16 peer_port /* big-endian */;
 | 
						|
	__u32 local_v4;
 | 
						|
	__u32 peer_v4;
 | 
						|
	void *local_v6;
 | 
						|
	void *peer_v6;
 | 
						|
};
 | 
						|
 | 
						|
static inline struct fou_del_req *fou_del_req_alloc(void)
 | 
						|
{
 | 
						|
	return calloc(1, sizeof(struct fou_del_req));
 | 
						|
}
 | 
						|
void fou_del_req_free(struct fou_del_req *req);
 | 
						|
 | 
						|
static inline void fou_del_req_set_af(struct fou_del_req *req, __u8 af)
 | 
						|
{
 | 
						|
	req->_present.af = 1;
 | 
						|
	req->af = af;
 | 
						|
}
 | 
						|
static inline void
 | 
						|
fou_del_req_set_ifindex(struct fou_del_req *req, __s32 ifindex)
 | 
						|
{
 | 
						|
	req->_present.ifindex = 1;
 | 
						|
	req->ifindex = ifindex;
 | 
						|
}
 | 
						|
static inline void
 | 
						|
fou_del_req_set_port(struct fou_del_req *req, __u16 port /* big-endian */)
 | 
						|
{
 | 
						|
	req->_present.port = 1;
 | 
						|
	req->port = port;
 | 
						|
}
 | 
						|
static inline void
 | 
						|
fou_del_req_set_peer_port(struct fou_del_req *req,
 | 
						|
			  __u16 peer_port /* big-endian */)
 | 
						|
{
 | 
						|
	req->_present.peer_port = 1;
 | 
						|
	req->peer_port = peer_port;
 | 
						|
}
 | 
						|
static inline void
 | 
						|
fou_del_req_set_local_v4(struct fou_del_req *req, __u32 local_v4)
 | 
						|
{
 | 
						|
	req->_present.local_v4 = 1;
 | 
						|
	req->local_v4 = local_v4;
 | 
						|
}
 | 
						|
static inline void
 | 
						|
fou_del_req_set_peer_v4(struct fou_del_req *req, __u32 peer_v4)
 | 
						|
{
 | 
						|
	req->_present.peer_v4 = 1;
 | 
						|
	req->peer_v4 = peer_v4;
 | 
						|
}
 | 
						|
static inline void
 | 
						|
fou_del_req_set_local_v6(struct fou_del_req *req, const void *local_v6,
 | 
						|
			 size_t len)
 | 
						|
{
 | 
						|
	free(req->local_v6);
 | 
						|
	req->_present.local_v6_len = len;
 | 
						|
	req->local_v6 = malloc(req->_present.local_v6_len);
 | 
						|
	memcpy(req->local_v6, local_v6, req->_present.local_v6_len);
 | 
						|
}
 | 
						|
static inline void
 | 
						|
fou_del_req_set_peer_v6(struct fou_del_req *req, const void *peer_v6,
 | 
						|
			size_t len)
 | 
						|
{
 | 
						|
	free(req->peer_v6);
 | 
						|
	req->_present.peer_v6_len = len;
 | 
						|
	req->peer_v6 = malloc(req->_present.peer_v6_len);
 | 
						|
	memcpy(req->peer_v6, peer_v6, req->_present.peer_v6_len);
 | 
						|
}
 | 
						|
 | 
						|
/*
 | 
						|
 * Delete port.
 | 
						|
 */
 | 
						|
int fou_del(struct ynl_sock *ys, struct fou_del_req *req);
 | 
						|
 | 
						|
/* ============== FOU_CMD_GET ============== */
 | 
						|
/* FOU_CMD_GET - do */
 | 
						|
struct fou_get_req {
 | 
						|
	struct {
 | 
						|
		__u32 af:1;
 | 
						|
		__u32 ifindex:1;
 | 
						|
		__u32 port:1;
 | 
						|
		__u32 peer_port:1;
 | 
						|
		__u32 local_v4:1;
 | 
						|
		__u32 peer_v4:1;
 | 
						|
		__u32 local_v6_len;
 | 
						|
		__u32 peer_v6_len;
 | 
						|
	} _present;
 | 
						|
 | 
						|
	__u8 af;
 | 
						|
	__s32 ifindex;
 | 
						|
	__u16 port /* big-endian */;
 | 
						|
	__u16 peer_port /* big-endian */;
 | 
						|
	__u32 local_v4;
 | 
						|
	__u32 peer_v4;
 | 
						|
	void *local_v6;
 | 
						|
	void *peer_v6;
 | 
						|
};
 | 
						|
 | 
						|
static inline struct fou_get_req *fou_get_req_alloc(void)
 | 
						|
{
 | 
						|
	return calloc(1, sizeof(struct fou_get_req));
 | 
						|
}
 | 
						|
void fou_get_req_free(struct fou_get_req *req);
 | 
						|
 | 
						|
static inline void fou_get_req_set_af(struct fou_get_req *req, __u8 af)
 | 
						|
{
 | 
						|
	req->_present.af = 1;
 | 
						|
	req->af = af;
 | 
						|
}
 | 
						|
static inline void
 | 
						|
fou_get_req_set_ifindex(struct fou_get_req *req, __s32 ifindex)
 | 
						|
{
 | 
						|
	req->_present.ifindex = 1;
 | 
						|
	req->ifindex = ifindex;
 | 
						|
}
 | 
						|
static inline void
 | 
						|
fou_get_req_set_port(struct fou_get_req *req, __u16 port /* big-endian */)
 | 
						|
{
 | 
						|
	req->_present.port = 1;
 | 
						|
	req->port = port;
 | 
						|
}
 | 
						|
static inline void
 | 
						|
fou_get_req_set_peer_port(struct fou_get_req *req,
 | 
						|
			  __u16 peer_port /* big-endian */)
 | 
						|
{
 | 
						|
	req->_present.peer_port = 1;
 | 
						|
	req->peer_port = peer_port;
 | 
						|
}
 | 
						|
static inline void
 | 
						|
fou_get_req_set_local_v4(struct fou_get_req *req, __u32 local_v4)
 | 
						|
{
 | 
						|
	req->_present.local_v4 = 1;
 | 
						|
	req->local_v4 = local_v4;
 | 
						|
}
 | 
						|
static inline void
 | 
						|
fou_get_req_set_peer_v4(struct fou_get_req *req, __u32 peer_v4)
 | 
						|
{
 | 
						|
	req->_present.peer_v4 = 1;
 | 
						|
	req->peer_v4 = peer_v4;
 | 
						|
}
 | 
						|
static inline void
 | 
						|
fou_get_req_set_local_v6(struct fou_get_req *req, const void *local_v6,
 | 
						|
			 size_t len)
 | 
						|
{
 | 
						|
	free(req->local_v6);
 | 
						|
	req->_present.local_v6_len = len;
 | 
						|
	req->local_v6 = malloc(req->_present.local_v6_len);
 | 
						|
	memcpy(req->local_v6, local_v6, req->_present.local_v6_len);
 | 
						|
}
 | 
						|
static inline void
 | 
						|
fou_get_req_set_peer_v6(struct fou_get_req *req, const void *peer_v6,
 | 
						|
			size_t len)
 | 
						|
{
 | 
						|
	free(req->peer_v6);
 | 
						|
	req->_present.peer_v6_len = len;
 | 
						|
	req->peer_v6 = malloc(req->_present.peer_v6_len);
 | 
						|
	memcpy(req->peer_v6, peer_v6, req->_present.peer_v6_len);
 | 
						|
}
 | 
						|
 | 
						|
struct fou_get_rsp {
 | 
						|
	struct {
 | 
						|
		__u32 port:1;
 | 
						|
		__u32 ipproto:1;
 | 
						|
		__u32 type:1;
 | 
						|
		__u32 remcsum_nopartial:1;
 | 
						|
		__u32 local_v4:1;
 | 
						|
		__u32 peer_v4:1;
 | 
						|
		__u32 local_v6_len;
 | 
						|
		__u32 peer_v6_len;
 | 
						|
		__u32 peer_port:1;
 | 
						|
		__u32 ifindex:1;
 | 
						|
	} _present;
 | 
						|
 | 
						|
	__u16 port /* big-endian */;
 | 
						|
	__u8 ipproto;
 | 
						|
	__u8 type;
 | 
						|
	__u32 local_v4;
 | 
						|
	__u32 peer_v4;
 | 
						|
	void *local_v6;
 | 
						|
	void *peer_v6;
 | 
						|
	__u16 peer_port /* big-endian */;
 | 
						|
	__s32 ifindex;
 | 
						|
};
 | 
						|
 | 
						|
void fou_get_rsp_free(struct fou_get_rsp *rsp);
 | 
						|
 | 
						|
/*
 | 
						|
 * Get tunnel info.
 | 
						|
 */
 | 
						|
struct fou_get_rsp *fou_get(struct ynl_sock *ys, struct fou_get_req *req);
 | 
						|
 | 
						|
/* FOU_CMD_GET - dump */
 | 
						|
struct fou_get_list {
 | 
						|
	struct fou_get_list *next;
 | 
						|
	struct fou_get_rsp obj __attribute__((aligned(8)));
 | 
						|
};
 | 
						|
 | 
						|
void fou_get_list_free(struct fou_get_list *rsp);
 | 
						|
 | 
						|
struct fou_get_list *fou_get_dump(struct ynl_sock *ys);
 | 
						|
 | 
						|
#endif /* _LINUX_FOU_GEN_H */
 |