lsquic_util.h revision f2a7fa84
17d09751dSDmitri Tikhonov/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */ 250aadb33SDmitri Tikhonov/* 350aadb33SDmitri Tikhonov * lsquic_util.h -- Utility functions 450aadb33SDmitri Tikhonov */ 550aadb33SDmitri Tikhonov 650aadb33SDmitri Tikhonov#ifndef LSQUIC_UTIL_H 750aadb33SDmitri Tikhonov#define LSQUIC_UTIL_H 1 850aadb33SDmitri Tikhonov 950aadb33SDmitri Tikhonov#ifdef __cplusplus 1050aadb33SDmitri Tikhonovextern "C" { 1150aadb33SDmitri Tikhonov#endif 1250aadb33SDmitri Tikhonov 138c1565cbSDmitri Tikhonovstruct sockaddr; 148c1565cbSDmitri Tikhonov 1550aadb33SDmitri Tikhonovlsquic_time_t 1650aadb33SDmitri Tikhonovlsquic_time_now (void); 1750aadb33SDmitri Tikhonov 1883287402SDmitri Tikhonovvoid 1983287402SDmitri Tikhonovlsquic_init_timers (void); 2083287402SDmitri Tikhonov 2150aadb33SDmitri Tikhonov/* Returns 1 if `buf' contains only zero bytes, 0 otherwise. 2250aadb33SDmitri Tikhonov */ 2350aadb33SDmitri Tikhonovint 2450aadb33SDmitri Tikhonovlsquic_is_zero (const void *buf, size_t bufsz); 2550aadb33SDmitri Tikhonov 2650aadb33SDmitri Tikhonov 2750aadb33SDmitri Tikhonov 2850aadb33SDmitri Tikhonovchar * get_bin_str(const void *s, size_t len, size_t max_display_len); 2950aadb33SDmitri Tikhonov 3055cd0b38SDmitri Tikhonovsize_t 3155cd0b38SDmitri Tikhonovlsquic_hex_encode (const void *src, size_t src_sz, void *dst, size_t dst_sz); 3250aadb33SDmitri Tikhonov 3350aadb33SDmitri Tikhonov/* `out_sz' is assumed to be at least 1. `out' is always NUL-terminated. */ 3450aadb33SDmitri Tikhonovsize_t 355392f7a3SLiteSpeed Techlsquic_hexdump (const void *src, size_t src_sz, char *out, size_t out_sz); 365392f7a3SLiteSpeed Tech 375392f7a3SLiteSpeed Techvoid 385392f7a3SLiteSpeed Techlsquic_hexstr (const unsigned char *buf, size_t bufsz, char *out, size_t outsz); 395392f7a3SLiteSpeed Tech 405392f7a3SLiteSpeed Tech#define HEXSTR(buf, bufsz, out) \ 415392f7a3SLiteSpeed Tech (lsquic_hexstr(buf, bufsz, out, sizeof(out)), out) 4250aadb33SDmitri Tikhonov 438c1565cbSDmitri Tikhonovint 448c1565cbSDmitri Tikhonovlsquic_sockaddr_eq (const struct sockaddr *a, const struct sockaddr *b); 458c1565cbSDmitri Tikhonov 46f2a7fa84SDmitri Tikhonovvoid 47f2a7fa84SDmitri Tikhonovlsquic_sockaddr2str (const struct sockaddr *addr, char *buf, size_t sz); 48f2a7fa84SDmitri Tikhonov 49f2a7fa84SDmitri Tikhonov#define SA2STR(sa_, buf_) (lsquic_sockaddr2str(sa_, buf_, sizeof(buf_)), buf_) 50f2a7fa84SDmitri Tikhonov 5150aadb33SDmitri Tikhonov#ifdef __cplusplus 5250aadb33SDmitri Tikhonov} 5350aadb33SDmitri Tikhonov#endif 5450aadb33SDmitri Tikhonov 5550aadb33SDmitri Tikhonov 5650aadb33SDmitri Tikhonov#endif 57