195dbdf32Schristos /* 295dbdf32Schristos * Copyright (c) 2020 Yubico AB. All rights reserved. 395dbdf32Schristos * Use of this source code is governed by a BSD-style 495dbdf32Schristos * license that can be found in the LICENSE file. 5*2d40c451Schristos * SPDX-License-Identifier: BSD-2-Clause 695dbdf32Schristos */ 795dbdf32Schristos 895dbdf32Schristos #ifndef _FIDO_NETLINK_H 995dbdf32Schristos #define _FIDO_NETLINK_H 1095dbdf32Schristos 1195dbdf32Schristos #include <sys/socket.h> 1295dbdf32Schristos 1395dbdf32Schristos #include <linux/genetlink.h> 1495dbdf32Schristos #include <linux/netlink.h> 1595dbdf32Schristos #include <linux/nfc.h> 1695dbdf32Schristos 1795dbdf32Schristos #include <stdlib.h> 1895dbdf32Schristos #include <stdint.h> 1995dbdf32Schristos 2095dbdf32Schristos #ifdef __cplusplus 2195dbdf32Schristos extern "C" { 2295dbdf32Schristos #endif /* __cplusplus */ 2395dbdf32Schristos 2495dbdf32Schristos typedef struct fido_nl { 2595dbdf32Schristos int fd; 2695dbdf32Schristos uint16_t nfc_type; 2795dbdf32Schristos uint32_t nfc_mcastgrp; 2895dbdf32Schristos struct sockaddr_nl saddr; 2995dbdf32Schristos } fido_nl_t; 3095dbdf32Schristos 3195dbdf32Schristos fido_nl_t *fido_nl_new(void); 3295dbdf32Schristos void fido_nl_free(struct fido_nl **); 3395dbdf32Schristos int fido_nl_power_nfc(struct fido_nl *, uint32_t); 3495dbdf32Schristos int fido_nl_get_nfc_target(struct fido_nl *, uint32_t , uint32_t *); 3595dbdf32Schristos 3695dbdf32Schristos #ifdef FIDO_FUZZ 3795dbdf32Schristos void set_netlink_io_functions(ssize_t (*)(int, void *, size_t), 3895dbdf32Schristos ssize_t (*)(int, const void *, size_t)); 3995dbdf32Schristos #endif 4095dbdf32Schristos 4195dbdf32Schristos #ifdef __cplusplus 4295dbdf32Schristos } /* extern "C" */ 4395dbdf32Schristos #endif /* __cplusplus */ 4495dbdf32Schristos 4595dbdf32Schristos #endif /* !_FIDO_NETLINK_H */ 46