2023-06-05 12:01:07 -07:00
/* 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 ) ;
2023-08-23 17:30:53 -07:00
req - > _present . local_v6_len = len ;
2023-06-05 12:01:07 -07:00
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 ) ;
2023-08-23 17:30:53 -07:00
req - > _present . peer_v6_len = len ;
2023-06-05 12:01:07 -07:00
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 ) ;
2023-08-23 17:30:53 -07:00
req - > _present . local_v6_len = len ;
2023-06-05 12:01:07 -07:00
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 ) ;
2023-08-23 17:30:53 -07:00
req - > _present . peer_v6_len = len ;
2023-06-05 12:01:07 -07:00
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 ) ;
2023-08-23 17:30:53 -07:00
req - > _present . local_v6_len = len ;
2023-06-05 12:01:07 -07:00
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 ) ;
2023-08-23 17:30:53 -07:00
req - > _present . peer_v6_len = len ;
2023-06-05 12:01:07 -07:00
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 */