wpa_supplicant / hostapd  2.5
 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Macros Pages
Data Structures | Macros | Typedefs | Functions
os.h File Reference

OS specific functions. More...

Go to the source code of this file.

Data Structures

struct  os_time
 
struct  os_reltime
 
struct  os_tm
 

Macros

#define os_malloc(s)   malloc((s))
 
#define os_realloc(p, s)   realloc((p), (s))
 
#define os_free(p)   free((p))
 
#define os_strdup(s)   strdup(s)
 
#define os_memcpy(d, s, n)   memcpy((d), (s), (n))
 
#define os_memmove(d, s, n)   memmove((d), (s), (n))
 
#define os_memset(s, c, n)   memset(s, c, n)
 
#define os_memcmp(s1, s2, n)   memcmp((s1), (s2), (n))
 
#define os_strlen(s)   strlen(s)
 
#define os_strcasecmp(s1, s2)   strcasecmp((s1), (s2))
 
#define os_strncasecmp(s1, s2, n)   strncasecmp((s1), (s2), (n))
 
#define os_strchr(s, c)   strchr((s), (c))
 
#define os_strcmp(s1, s2)   strcmp((s1), (s2))
 
#define os_strncmp(s1, s2, n)   strncmp((s1), (s2), (n))
 
#define os_strrchr(s, c)   strrchr((s), (c))
 
#define os_strstr(h, n)   strstr((h), (n))
 
#define os_snprintf   snprintf
 
#define TEST_FAIL()   0
 

Typedefs

typedef long os_time_t
 

Functions

void os_sleep (os_time_t sec, os_time_t usec)
 Sleep (sec, usec) More...
 
int os_get_time (struct os_time *t)
 Get current time (sec, usec) More...
 
int os_get_reltime (struct os_reltime *t)
 Get relative time (sec, usec) More...
 
int os_mktime (int year, int month, int day, int hour, int min, int sec, os_time_t *t)
 Convert broken-down time into seconds since 1970-01-01. More...
 
int os_gmtime (os_time_t t, struct os_tm *tm)
 
int os_daemonize (const char *pid_file)
 Run in the background (detach from the controlling terminal) More...
 
void os_daemonize_terminate (const char *pid_file)
 Stop running in the background (remove pid file) More...
 
int os_get_random (unsigned char *buf, size_t len)
 Get cryptographically strong pseudo random data. More...
 
unsigned long os_random (void)
 Get pseudo random value (not necessarily very strong) More...
 
char * os_rel2abs_path (const char *rel_path)
 Get an absolute path for a file. More...
 
int os_program_init (void)
 Program initialization (called at start) More...
 
void os_program_deinit (void)
 Program deinitialization (called just before exit) More...
 
int os_setenv (const char *name, const char *value, int overwrite)
 Set environment variable. More...
 
int os_unsetenv (const char *name)
 Delete environent variable. More...
 
char * os_readfile (const char *name, size_t *len)
 Read a file to an allocated memory buffer. More...
 
int os_file_exists (const char *fname)
 Check whether the specified file exists. More...
 
int os_fdatasync (FILE *stream)
 Sync a file's (for a given stream) state with storage device. More...
 
void * os_zalloc (size_t size)
 Allocate and zero memory. More...
 
size_t os_strlcpy (char *dest, const char *src, size_t siz)
 Copy a string with size bound and NUL-termination. More...
 
int os_memcmp_const (const void *a, const void *b, size_t len)
 Constant time memory comparison. More...
 
int os_exec (const char *program, const char *arg, int wait_completion)
 Execute an external program. More...
 

Detailed Description

OS specific functions.

Function Documentation

int os_daemonize ( const char *  pid_file)

Run in the background (detach from the controlling terminal)

Parameters
pid_fileFile name to write the process ID to or NULL to skip this
Returns
0 on success, -1 on failure
void os_daemonize_terminate ( const char *  pid_file)

Stop running in the background (remove pid file)

Parameters
pid_fileFile name to write the process ID to or NULL to skip this
int os_exec ( const char *  program,
const char *  arg,
int  wait_completion 
)

Execute an external program.

Parameters
programPath to the program
argCommand line argument string
wait_completionWhether to wait until the program execution completes
Returns
0 on success, -1 on error
int os_fdatasync ( FILE *  stream)

Sync a file's (for a given stream) state with storage device.

Parameters
streamthe stream to be flushed
Returns
0 if the operation succeeded or -1 on failure
int os_file_exists ( const char *  fname)

Check whether the specified file exists.

Parameters
fnamePath and name of the file
Returns
1 if the file exists or 0 if not
int os_get_random ( unsigned char *  buf,
size_t  len 
)

Get cryptographically strong pseudo random data.

Parameters
bufBuffer for pseudo random data
lenLength of the buffer
Returns
0 on success, -1 on failure
int os_get_reltime ( struct os_reltime t)

Get relative time (sec, usec)

Parameters
tPointer to buffer for the time
Returns
0 on success, -1 on failure
int os_get_time ( struct os_time t)

Get current time (sec, usec)

Parameters
tPointer to buffer for the time
Returns
0 on success, -1 on failure
int os_memcmp_const ( const void *  a,
const void *  b,
size_t  len 
)

Constant time memory comparison.

Parameters
aFirst buffer to compare
bSecond buffer to compare
lenNumber of octets to compare
Returns
0 if buffers are equal, non-zero if not

This function is meant for comparing passwords or hash values where difference in execution time could provide external observer information about the location of the difference in the memory buffers. The return value does not behave like os_memcmp(), i.e., os_memcmp_const() cannot be used to sort items into a defined order. Unlike os_memcmp(), execution time of os_memcmp_const() does not depend on the contents of the compared memory buffers, but only on the total compared length.

int os_mktime ( int  year,
int  month,
int  day,
int  hour,
int  min,
int  sec,
os_time_t *  t 
)

Convert broken-down time into seconds since 1970-01-01.

Parameters
yearFour digit year
monthMonth (1 .. 12)
dayDay of month (1 .. 31)
hourHour (0 .. 23)
minMinute (0 .. 59)
secSecond (0 .. 60)
tBuffer for returning calendar time representation (seconds since 1970-01-01 00:00:00)
Returns
0 on success, -1 on failure

Note: The result is in seconds from Epoch, i.e., in UTC, not in local time which is used by POSIX mktime().

void os_program_deinit ( void  )

Program deinitialization (called just before exit)

This function is called just before a program exists. If there are any OS specific processing, e.g., freeing resourced allocated in os_program_init(), it should be done here. It is also acceptable for this function to do nothing.

int os_program_init ( void  )

Program initialization (called at start)

Returns
0 on success, -1 on failure

This function is called when a programs starts. If there are any OS specific processing that is needed, it can be placed here. It is also acceptable to just return 0 if not special processing is needed.

unsigned long os_random ( void  )

Get pseudo random value (not necessarily very strong)

Returns
Pseudo random value
char* os_readfile ( const char *  name,
size_t *  len 
)

Read a file to an allocated memory buffer.

Parameters
nameName of the file to read
lenFor returning the length of the allocated buffer
Returns
Pointer to the allocated buffer or NULL on failure

This function allocates memory and reads the given file to this buffer. Both binary and text files can be read with this function. The caller is responsible for freeing the returned buffer with os_free().

char* os_rel2abs_path ( const char *  rel_path)

Get an absolute path for a file.

Parameters
rel_pathRelative path to a file
Returns
Absolute path for the file or NULL on failure

This function tries to convert a relative path of a file to an absolute path in order for the file to be found even if current working directory has changed. The returned value is allocated and caller is responsible for freeing it. It is acceptable to just return the same path in an allocated buffer, e.g., return strdup(rel_path). This function is only used to find configuration files when os_daemonize() may have changed the current working directory and relative path would be pointing to a different location.

int os_setenv ( const char *  name,
const char *  value,
int  overwrite 
)

Set environment variable.

Parameters
nameName of the variable
valueValue to set to the variable
overwriteWhether existing variable should be overwritten
Returns
0 on success, -1 on error

This function is only used for wpa_cli action scripts. OS wrapper does not need to implement this if such functionality is not needed.

void os_sleep ( os_time_t  sec,
os_time_t  usec 
)

Sleep (sec, usec)

Parameters
secNumber of seconds to sleep
usecNumber of microseconds to sleep
size_t os_strlcpy ( char *  dest,
const char *  src,
size_t  siz 
)

Copy a string with size bound and NUL-termination.

Parameters
destDestination
srcSource
sizSize of the target buffer
Returns
Total length of the target string (length of src) (not including NUL-termination)

This function matches in behavior with the strlcpy(3) function in OpenBSD.

int os_unsetenv ( const char *  name)

Delete environent variable.

Parameters
nameName of the variable
Returns
0 on success, -1 on error

This function is only used for wpa_cli action scripts. OS wrapper does not need to implement this if such functionality is not needed.

void* os_zalloc ( size_t  size)

Allocate and zero memory.

Parameters
sizeNumber of bytes to allocate
Returns
Pointer to allocated and zeroed memory or NULL on failure

Caller is responsible for freeing the returned buffer with os_free().