162306a36Sopenharmony_ci/* SPDX-License-Identifier: ((GPL-2.0 WITH Linux-syscall-note) OR BSD-3-Clause) */
262306a36Sopenharmony_ci/* Do not edit directly, auto-generated from: */
362306a36Sopenharmony_ci/*	Documentation/netlink/specs/handshake.yaml */
462306a36Sopenharmony_ci/* YNL-GEN user header */
562306a36Sopenharmony_ci
662306a36Sopenharmony_ci#ifndef _LINUX_HANDSHAKE_GEN_H
762306a36Sopenharmony_ci#define _LINUX_HANDSHAKE_GEN_H
862306a36Sopenharmony_ci
962306a36Sopenharmony_ci#include <stdlib.h>
1062306a36Sopenharmony_ci#include <string.h>
1162306a36Sopenharmony_ci#include <linux/types.h>
1262306a36Sopenharmony_ci#include <linux/handshake.h>
1362306a36Sopenharmony_ci
1462306a36Sopenharmony_cistruct ynl_sock;
1562306a36Sopenharmony_ci
1662306a36Sopenharmony_ciextern const struct ynl_family ynl_handshake_family;
1762306a36Sopenharmony_ci
1862306a36Sopenharmony_ci/* Enums */
1962306a36Sopenharmony_ciconst char *handshake_op_str(int op);
2062306a36Sopenharmony_ciconst char *handshake_handler_class_str(enum handshake_handler_class value);
2162306a36Sopenharmony_ciconst char *handshake_msg_type_str(enum handshake_msg_type value);
2262306a36Sopenharmony_ciconst char *handshake_auth_str(enum handshake_auth value);
2362306a36Sopenharmony_ci
2462306a36Sopenharmony_ci/* Common nested types */
2562306a36Sopenharmony_cistruct handshake_x509 {
2662306a36Sopenharmony_ci	struct {
2762306a36Sopenharmony_ci		__u32 cert:1;
2862306a36Sopenharmony_ci		__u32 privkey:1;
2962306a36Sopenharmony_ci	} _present;
3062306a36Sopenharmony_ci
3162306a36Sopenharmony_ci	__u32 cert;
3262306a36Sopenharmony_ci	__u32 privkey;
3362306a36Sopenharmony_ci};
3462306a36Sopenharmony_ci
3562306a36Sopenharmony_ci/* ============== HANDSHAKE_CMD_ACCEPT ============== */
3662306a36Sopenharmony_ci/* HANDSHAKE_CMD_ACCEPT - do */
3762306a36Sopenharmony_cistruct handshake_accept_req {
3862306a36Sopenharmony_ci	struct {
3962306a36Sopenharmony_ci		__u32 handler_class:1;
4062306a36Sopenharmony_ci	} _present;
4162306a36Sopenharmony_ci
4262306a36Sopenharmony_ci	enum handshake_handler_class handler_class;
4362306a36Sopenharmony_ci};
4462306a36Sopenharmony_ci
4562306a36Sopenharmony_cistatic inline struct handshake_accept_req *handshake_accept_req_alloc(void)
4662306a36Sopenharmony_ci{
4762306a36Sopenharmony_ci	return calloc(1, sizeof(struct handshake_accept_req));
4862306a36Sopenharmony_ci}
4962306a36Sopenharmony_civoid handshake_accept_req_free(struct handshake_accept_req *req);
5062306a36Sopenharmony_ci
5162306a36Sopenharmony_cistatic inline void
5262306a36Sopenharmony_cihandshake_accept_req_set_handler_class(struct handshake_accept_req *req,
5362306a36Sopenharmony_ci				       enum handshake_handler_class handler_class)
5462306a36Sopenharmony_ci{
5562306a36Sopenharmony_ci	req->_present.handler_class = 1;
5662306a36Sopenharmony_ci	req->handler_class = handler_class;
5762306a36Sopenharmony_ci}
5862306a36Sopenharmony_ci
5962306a36Sopenharmony_cistruct handshake_accept_rsp {
6062306a36Sopenharmony_ci	struct {
6162306a36Sopenharmony_ci		__u32 sockfd:1;
6262306a36Sopenharmony_ci		__u32 message_type:1;
6362306a36Sopenharmony_ci		__u32 timeout:1;
6462306a36Sopenharmony_ci		__u32 auth_mode:1;
6562306a36Sopenharmony_ci		__u32 peername_len;
6662306a36Sopenharmony_ci	} _present;
6762306a36Sopenharmony_ci
6862306a36Sopenharmony_ci	__u32 sockfd;
6962306a36Sopenharmony_ci	enum handshake_msg_type message_type;
7062306a36Sopenharmony_ci	__u32 timeout;
7162306a36Sopenharmony_ci	enum handshake_auth auth_mode;
7262306a36Sopenharmony_ci	unsigned int n_peer_identity;
7362306a36Sopenharmony_ci	__u32 *peer_identity;
7462306a36Sopenharmony_ci	unsigned int n_certificate;
7562306a36Sopenharmony_ci	struct handshake_x509 *certificate;
7662306a36Sopenharmony_ci	char *peername;
7762306a36Sopenharmony_ci};
7862306a36Sopenharmony_ci
7962306a36Sopenharmony_civoid handshake_accept_rsp_free(struct handshake_accept_rsp *rsp);
8062306a36Sopenharmony_ci
8162306a36Sopenharmony_ci/*
8262306a36Sopenharmony_ci * Handler retrieves next queued handshake request
8362306a36Sopenharmony_ci */
8462306a36Sopenharmony_cistruct handshake_accept_rsp *
8562306a36Sopenharmony_cihandshake_accept(struct ynl_sock *ys, struct handshake_accept_req *req);
8662306a36Sopenharmony_ci
8762306a36Sopenharmony_ci/* HANDSHAKE_CMD_ACCEPT - notify */
8862306a36Sopenharmony_cistruct handshake_accept_ntf {
8962306a36Sopenharmony_ci	__u16 family;
9062306a36Sopenharmony_ci	__u8 cmd;
9162306a36Sopenharmony_ci	struct ynl_ntf_base_type *next;
9262306a36Sopenharmony_ci	void (*free)(struct handshake_accept_ntf *ntf);
9362306a36Sopenharmony_ci	struct handshake_accept_rsp obj __attribute__ ((aligned (8)));
9462306a36Sopenharmony_ci};
9562306a36Sopenharmony_ci
9662306a36Sopenharmony_civoid handshake_accept_ntf_free(struct handshake_accept_ntf *rsp);
9762306a36Sopenharmony_ci
9862306a36Sopenharmony_ci/* ============== HANDSHAKE_CMD_DONE ============== */
9962306a36Sopenharmony_ci/* HANDSHAKE_CMD_DONE - do */
10062306a36Sopenharmony_cistruct handshake_done_req {
10162306a36Sopenharmony_ci	struct {
10262306a36Sopenharmony_ci		__u32 status:1;
10362306a36Sopenharmony_ci		__u32 sockfd:1;
10462306a36Sopenharmony_ci	} _present;
10562306a36Sopenharmony_ci
10662306a36Sopenharmony_ci	__u32 status;
10762306a36Sopenharmony_ci	__u32 sockfd;
10862306a36Sopenharmony_ci	unsigned int n_remote_auth;
10962306a36Sopenharmony_ci	__u32 *remote_auth;
11062306a36Sopenharmony_ci};
11162306a36Sopenharmony_ci
11262306a36Sopenharmony_cistatic inline struct handshake_done_req *handshake_done_req_alloc(void)
11362306a36Sopenharmony_ci{
11462306a36Sopenharmony_ci	return calloc(1, sizeof(struct handshake_done_req));
11562306a36Sopenharmony_ci}
11662306a36Sopenharmony_civoid handshake_done_req_free(struct handshake_done_req *req);
11762306a36Sopenharmony_ci
11862306a36Sopenharmony_cistatic inline void
11962306a36Sopenharmony_cihandshake_done_req_set_status(struct handshake_done_req *req, __u32 status)
12062306a36Sopenharmony_ci{
12162306a36Sopenharmony_ci	req->_present.status = 1;
12262306a36Sopenharmony_ci	req->status = status;
12362306a36Sopenharmony_ci}
12462306a36Sopenharmony_cistatic inline void
12562306a36Sopenharmony_cihandshake_done_req_set_sockfd(struct handshake_done_req *req, __u32 sockfd)
12662306a36Sopenharmony_ci{
12762306a36Sopenharmony_ci	req->_present.sockfd = 1;
12862306a36Sopenharmony_ci	req->sockfd = sockfd;
12962306a36Sopenharmony_ci}
13062306a36Sopenharmony_cistatic inline void
13162306a36Sopenharmony_ci__handshake_done_req_set_remote_auth(struct handshake_done_req *req,
13262306a36Sopenharmony_ci				     __u32 *remote_auth,
13362306a36Sopenharmony_ci				     unsigned int n_remote_auth)
13462306a36Sopenharmony_ci{
13562306a36Sopenharmony_ci	free(req->remote_auth);
13662306a36Sopenharmony_ci	req->remote_auth = remote_auth;
13762306a36Sopenharmony_ci	req->n_remote_auth = n_remote_auth;
13862306a36Sopenharmony_ci}
13962306a36Sopenharmony_ci
14062306a36Sopenharmony_ci/*
14162306a36Sopenharmony_ci * Handler reports handshake completion
14262306a36Sopenharmony_ci */
14362306a36Sopenharmony_ciint handshake_done(struct ynl_sock *ys, struct handshake_done_req *req);
14462306a36Sopenharmony_ci
14562306a36Sopenharmony_ci#endif /* _LINUX_HANDSHAKE_GEN_H */
146