text: /*
   * wpa_supplicant/hostapd / Debug prints
   * Copyright (c) 2002-2007, Jouni Malinen <j@w1.fi>
   *
   * This program is free software; you can redistribute it and/or modify
   * it under the terms of the GNU General Public License version 2 as
   * published by the Free Software Foundation.
   *
   * Alternatively, this software may be distributed under the terms of BSD
   * license.
   *
   * See README and COPYING for more details.
   */
  
  #ifndef WPA_DEBUG_H
  #define WPA_DEBUG_H
  
  
  enum { MSG_MSGDUMP, MSG_DEBUG, MSG_INFO, MSG_WARNING, MSG_ERROR };
  
  /** EAP authentication completed successfully */
  #define WPA_EVENT_EAP_SUCCESS "CTRL-EVENT-EAP-SUCCESS "
  
  int wpa_debug_open_file(const char *path);
  void wpa_debug_close_file(void);
  
  /**
   * wpa_debug_printf_timestamp - Print timestamp for debug output
   *
   * This function prints a timestamp in seconds_from_1970.microsoconds
   * format if debug output has been configured to include timestamps in debug
   * messages.
   */
  void wpa_debug_print_timestamp(void);
  
  /**
   * wpa_printf - conditional printf
   * @level: priority level (MSG_*) of the message
   * @fmt: printf format string, followed by optional arguments
   *
   * This function is used to print conditional debugging and error messages. The
   * output may be directed to stdout, stderr, and/or syslog based on
   * configuration.
   *
   * Note: New line '\n' is added to the end of the text when printing to stdout.
   */
  //#define  DEBUG_PRINT
  //#define   MSG_PRINT
  
  /**
   * wpa_hexdump - conditional hex dump
   * @level: priority level (MSG_*) of the message
   * @title: title of for the message
   * @buf: data buffer to be dumped
   * @len: length of the buf
   *
   * This function is used to print conditional debugging and error messages. The
   * output may be directed to stdout, stderr, and/or syslog based on
   * configuration. The contents of buf is printed out has hex dump.
   */
  #ifdef DEBUG_PRINT
  #define wpa_printf(level,fmt, args...) ets_printf(fmt,## args)
  
  static inline void wpa_hexdump_ascii(int level, const char *title, const u8 *buf, size_t len)
  {
  
  }
  
  static inline void wpa_hexdump_ascii_key(int level, const char *title, const u8 *buf, size_t len)
  {
  }
  
  
  void wpa_hexdump(int level, const char *title, const u8 *buf, size_t len);
  
  static inline void wpa_hexdump_buf(int level, const char *title,
  				   const struct wpabuf *buf)
  {
  	wpa_hexdump(level, title, wpabuf_head(buf), wpabuf_len(buf));
  }
  
  /**
   * wpa_hexdump_key - conditional hex dump, hide keys
   * @level: priority level (MSG_*) of the message
   * @title: title of for the message
   * @buf: data buffer to be dumped
   * @len: length of the buf
   *
   * This function is used to print conditional debugging and error messages. The
   * output may be directed to stdout, stderr, and/or syslog based on
   * configuration. The contents of buf is printed out has hex dump. This works
   * like wpa_hexdump(), but by default, does not include secret keys (passwords,
   * etc.) in debug output.
   */
  void wpa_hexdump_key(int level, const char *title, const u8 *buf, size_t len);
  
  
  static inline void wpa_hexdump_buf_key(int level, const char *title,
  				       const struct wpabuf *buf)
  {
  	wpa_hexdump_key(level, title, wpabuf_head(buf), wpabuf_len(buf));
  }
  
  /**
   * wpa_hexdump_ascii - conditional hex dump
   * @level: priority level (MSG_*) of the message
   * @title: title of for the message
   * @buf: data buffer to be dumped
   * @len: length of the buf
   *
   * This function is used to print conditional debugging and error messages. The
   * output may be directed to stdout, stderr, and/or syslog based on
   * configuration. The contents of buf is printed out has hex dump with both
   * the hex numbers and ASCII characters (for printable range) are shown. 16
   * bytes per line will be shown.
   */
  void wpa_hexdump_ascii(int level, const char *title, const u8 *buf,
  		       size_t len);
  
  /**
   * wpa_hexdump_ascii_key - conditional hex dump, hide keys
   * @level: priority level (MSG_*) of the message
   * @title: title of for the message
   * @buf: data buffer to be dumped
   * @len: length of the buf
   *
   * This function is used to print conditional debugging and error messages. The
   * output may be directed to stdout, stderr, and/or syslog based on
   * configuration. The contents of buf is printed out has hex dump with both
   * the hex numbers and ASCII characters (for printable range) are shown. 16
   * bytes per line will be shown. This works like wpa_hexdump_ascii(), but by
   * default, does not include secret keys (passwords, etc.) in debug output.
   */
  void wpa_hexdump_ascii_key(int level, const char *title, const u8 *buf,
  			   size_t len);
  #else
  #define wpa_printf(level,fmt, args...)
  #define wpa_hexdump(...)
  #define wpa_hexdump_buf(...)
  #define wpa_hexdump_key(...)
  #define wpa_hexdump_buf_key(...)
  #define wpa_hexdump_ascii(...)
  #define wpa_hexdump_ascii_key(...)
  #endif
  
  #define wpa_auth_logger
  #define wpa_auth_vlogger
  
  /**
   * wpa_msg - Conditional printf for default target and ctrl_iface monitors
   * @ctx: Pointer to context data; this is the ctx variable registered
   *	with struct wpa_driver_ops::init()
   * @level: priority level (MSG_*) of the message
   * @fmt: printf format string, followed by optional arguments
   *
   * This function is used to print conditional debugging and error messages. The
   * output may be directed to stdout, stderr, and/or syslog based on
   * configuration. This function is like wpa_printf(), but it also sends the
   * same message to all attached ctrl_iface monitors.
   *
   * Note: New line '\n' is added to the end of the text when printing to stdout.
   */
  void wpa_msg(void *ctx, int level, const char *fmt, ...) PRINTF_FORMAT(3, 4);
  
  /**
   * wpa_msg_ctrl - Conditional printf for ctrl_iface monitors
   * @ctx: Pointer to context data; this is the ctx variable registered
   *	with struct wpa_driver_ops::init()
   * @level: priority level (MSG_*) of the message
   * @fmt: printf format string, followed by optional arguments
   *
   * This function is used to print conditional debugging and error messages.
   * This function is like wpa_msg(), but it sends the output only to the
   * attached ctrl_iface monitors. In other words, it can be used for frequent
   * events that do not need to be sent to syslog.
   */
  void wpa_msg_ctrl(void *ctx, int level, const char *fmt, ...)
  PRINTF_FORMAT(3, 4);
  
  typedef void (*wpa_msg_cb_func)(void *ctx, int level, const char *txt,
  				size_t len);
  
  typedef void (*eloop_timeout_handler)(void *eloop_data, void *user_ctx);
  
  int eloop_cancel_timeout(eloop_timeout_handler handler,
  			 void *eloop_data, void *user_data);
  
  int eloop_register_timeout(unsigned int secs, unsigned int usecs,
  			   eloop_timeout_handler handler,
  			   void *eloop_data, void *user_data);
  
  
  #endif /* WPA_DEBUG_H */
  