diff --git a/src/auth-proto.h b/src/auth-proto.h new file mode 100644 index 00000000..3823f2a5 --- /dev/null +++ b/src/auth-proto.h @@ -0,0 +1,84 @@ +/* + * + * Wireless daemon for Linux + * + * Copyright (C) 2019 Intel Corporation. All rights reserved. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + * + */ + +#include + +struct auth_proto { + bool (*start)(struct auth_proto *ap); + void (*free)(struct auth_proto *ap); + int (*rx_authenticate)(struct auth_proto *driver, + const uint8_t *frame, size_t len); + int (*rx_associate)(struct auth_proto *driver, + const uint8_t *frame, size_t len); + bool (*auth_timeout)(struct auth_proto *ap); + bool (*assoc_timeout)(struct auth_proto *ap); +}; + +static inline void auth_proto_free(struct auth_proto *ap) +{ + if (ap && ap->free) + ap->free(ap); +} + +static inline bool auth_proto_start(struct auth_proto *ap) +{ + if (ap && ap->start) + return ap->start(ap); + + return false; +} + +static inline int auth_proto_rx_authenticate(struct auth_proto *ap, + const uint8_t *frame, + size_t frame_len) +{ + if (ap && ap->rx_authenticate) + return ap->rx_authenticate(ap, frame, frame_len); + + return -ENOTSUP; +} + +static inline int auth_proto_rx_associate(struct auth_proto *ap, + const uint8_t *frame, + size_t frame_len) +{ + if (ap && ap->rx_associate) + return ap->rx_associate(ap, frame, frame_len); + + return -ENOTSUP; +} + +static inline bool auth_proto_auth_timeout(struct auth_proto *ap) +{ + if (ap && ap->auth_timeout) + return ap->auth_timeout(ap); + + return false; +} + +static inline bool auth_proto_assoc_timeout(struct auth_proto *ap) +{ + if (ap && ap->assoc_timeout) + return ap->assoc_timeout(ap); + + return false; +}