util.h 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. #ifndef SMART_DNS_UTIL_H
  2. #define SMART_DNS_UTIL_H
  3. #include <netdb.h>
  4. #include "stringutil.h"
  5. #define PORT_NOT_DEFINED -1
  6. #define MAX_IP_LEN 64
  7. unsigned long get_tick_count(void);
  8. char *gethost_by_addr(char *host, int maxsize, struct sockaddr *addr);
  9. int getaddr_by_host(char *host, struct sockaddr *addr, socklen_t *addr_len);
  10. int parse_ip(const char *value, char *ip, int *port);
  11. int check_is_ipaddr(const char *ip);
  12. int parse_uri(char *value, char *scheme, char *host, int *port, char *path);
  13. int set_fd_nonblock(int fd, int nonblock);
  14. char *reverse_string(char *output, char *input, int len);
  15. void print_stack(void);
  16. int ipset_add(const char *ipsetname, const unsigned char addr[], int addr_len, unsigned long timeout);
  17. int ipset_del(const char *ipsetname, const unsigned char addr[], int addr_len);
  18. void SSL_CRYPTO_thread_setup(void);
  19. void SSL_CRYPTO_thread_cleanup(void);
  20. unsigned char *SSL_SHA256(const unsigned char *d, size_t n, unsigned char *md);
  21. int SSL_base64_decode(const char *in, unsigned char *out);
  22. int create_pid_file(const char *pid_file);
  23. /* Parse a TLS packet for the Server Name Indication extension in the client
  24. * hello handshake, returning the first servername found (pointer to static
  25. * array)
  26. *
  27. * Returns:
  28. * >=0 - length of the hostname and updates *hostname
  29. * caller is responsible for freeing *hostname
  30. * -1 - Incomplete request
  31. * -2 - No Host header included in this request
  32. * -3 - Invalid hostname pointer
  33. * -4 - malloc failure
  34. * < -4 - Invalid TLS client hello
  35. */
  36. int parse_tls_header(const char *data, size_t data_len, char *hostname, const char **hostname_ptr);
  37. #endif