1/* 2 * Copyright (c) 2020 Yubico AB. All rights reserved. 3 * Use of this source code is governed by a BSD-style 4 * license that can be found in the LICENSE file. 5 * SPDX-License-Identifier: BSD-2-Clause 6 */ 7 8#ifndef _FIDO_NETLINK_H 9#define _FIDO_NETLINK_H 10 11#include <sys/socket.h> 12 13#include <linux/genetlink.h> 14#include <linux/netlink.h> 15#include <linux/nfc.h> 16 17#include <stdlib.h> 18#include <stdint.h> 19 20#ifdef __cplusplus 21extern "C" { 22#endif /* __cplusplus */ 23 24typedef struct fido_nl { 25 int fd; 26 uint16_t nfc_type; 27 uint32_t nfc_mcastgrp; 28 struct sockaddr_nl saddr; 29} fido_nl_t; 30 31fido_nl_t *fido_nl_new(void); 32void fido_nl_free(struct fido_nl **); 33int fido_nl_power_nfc(struct fido_nl *, uint32_t); 34int fido_nl_get_nfc_target(struct fido_nl *, uint32_t , uint32_t *); 35 36#ifdef FIDO_FUZZ 37void set_netlink_io_functions(ssize_t (*)(int, void *, size_t), 38 ssize_t (*)(int, const void *, size_t)); 39#endif 40 41#ifdef __cplusplus 42} /* extern "C" */ 43#endif /* __cplusplus */ 44 45#endif /* !_FIDO_NETLINK_H */ 46