131a29cc7ed87b62465c7e01f03484f4643d12309Dmitry Shmidt/*
231a29cc7ed87b62465c7e01f03484f4643d12309Dmitry Shmidt * Common hostapd/wpa_supplicant ctrl iface code.
331a29cc7ed87b62465c7e01f03484f4643d12309Dmitry Shmidt * Copyright (c) 2002-2013, Jouni Malinen <j@w1.fi>
431a29cc7ed87b62465c7e01f03484f4643d12309Dmitry Shmidt * Copyright (c) 2015, Qualcomm Atheros, Inc.
531a29cc7ed87b62465c7e01f03484f4643d12309Dmitry Shmidt *
631a29cc7ed87b62465c7e01f03484f4643d12309Dmitry Shmidt * This software may be distributed under the terms of the BSD license.
731a29cc7ed87b62465c7e01f03484f4643d12309Dmitry Shmidt * See README for more details.
831a29cc7ed87b62465c7e01f03484f4643d12309Dmitry Shmidt */
931a29cc7ed87b62465c7e01f03484f4643d12309Dmitry Shmidt#ifndef CONTROL_IFACE_COMMON_H
1031a29cc7ed87b62465c7e01f03484f4643d12309Dmitry Shmidt#define CONTROL_IFACE_COMMON_H
1131a29cc7ed87b62465c7e01f03484f4643d12309Dmitry Shmidt
1231a29cc7ed87b62465c7e01f03484f4643d12309Dmitry Shmidt#include "utils/list.h"
1331a29cc7ed87b62465c7e01f03484f4643d12309Dmitry Shmidt
1431a29cc7ed87b62465c7e01f03484f4643d12309Dmitry Shmidt/**
1531a29cc7ed87b62465c7e01f03484f4643d12309Dmitry Shmidt * struct wpa_ctrl_dst - Data structure of control interface monitors
1631a29cc7ed87b62465c7e01f03484f4643d12309Dmitry Shmidt *
1731a29cc7ed87b62465c7e01f03484f4643d12309Dmitry Shmidt * This structure is used to store information about registered control
1831a29cc7ed87b62465c7e01f03484f4643d12309Dmitry Shmidt * interface monitors into struct wpa_supplicant.
1931a29cc7ed87b62465c7e01f03484f4643d12309Dmitry Shmidt */
2031a29cc7ed87b62465c7e01f03484f4643d12309Dmitry Shmidtstruct wpa_ctrl_dst {
2131a29cc7ed87b62465c7e01f03484f4643d12309Dmitry Shmidt	struct dl_list list;
2231a29cc7ed87b62465c7e01f03484f4643d12309Dmitry Shmidt	struct sockaddr_storage addr;
2331a29cc7ed87b62465c7e01f03484f4643d12309Dmitry Shmidt	socklen_t addrlen;
2431a29cc7ed87b62465c7e01f03484f4643d12309Dmitry Shmidt	int debug_level;
2531a29cc7ed87b62465c7e01f03484f4643d12309Dmitry Shmidt	int errors;
2631a29cc7ed87b62465c7e01f03484f4643d12309Dmitry Shmidt};
2731a29cc7ed87b62465c7e01f03484f4643d12309Dmitry Shmidt
2831a29cc7ed87b62465c7e01f03484f4643d12309Dmitry Shmidtvoid sockaddr_print(int level, const char *msg, struct sockaddr_storage *sock,
2931a29cc7ed87b62465c7e01f03484f4643d12309Dmitry Shmidt		    socklen_t socklen);
3031a29cc7ed87b62465c7e01f03484f4643d12309Dmitry Shmidt
3131a29cc7ed87b62465c7e01f03484f4643d12309Dmitry Shmidtint ctrl_iface_attach(struct dl_list *ctrl_dst, struct sockaddr_storage *from,
3231a29cc7ed87b62465c7e01f03484f4643d12309Dmitry Shmidt		       socklen_t fromlen);
3331a29cc7ed87b62465c7e01f03484f4643d12309Dmitry Shmidtint ctrl_iface_detach(struct dl_list *ctrl_dst, struct sockaddr_storage *from,
3431a29cc7ed87b62465c7e01f03484f4643d12309Dmitry Shmidt		      socklen_t fromlen);
3531a29cc7ed87b62465c7e01f03484f4643d12309Dmitry Shmidtint ctrl_iface_level(struct dl_list *ctrl_dst, struct sockaddr_storage *from,
3631a29cc7ed87b62465c7e01f03484f4643d12309Dmitry Shmidt		     socklen_t fromlen, const char *level);
3731a29cc7ed87b62465c7e01f03484f4643d12309Dmitry Shmidt
3831a29cc7ed87b62465c7e01f03484f4643d12309Dmitry Shmidt#endif /* CONTROL_IFACE_COMMON_H */
39