|
libosmocore
0.9.6.241-b6c8
Osmocom core library
|
Files | |
| file | defs.h |
| General definitions that are meant to be included from header files. | |
| file | panic.h |
| file | utils.h |
| file | loggingrb.c |
| file | panic.c |
| Routines for panic handling. | |
| file | utils.c |
Data Structures | |
| struct | value_string |
| A mapping between human-readable string and numeric value. More... | |
Macros | |
| #define | OSMO_GNUC_PREREQ(maj, min) 0 |
| Check for gcc and version. More... | |
| #define | OSMO_DEPRECATED(text) |
| Set the deprecated attribute with a message. | |
| #define | ARRAY_SIZE(x) (sizeof(x) / sizeof((x)[0])) |
| Determine number of elements in an array of static size. | |
| #define | OSMO_MAX(a, b) ((a) >= (b) ? (a) : (b)) |
| Return the maximum of two specified values. | |
| #define | OSMO_MIN(a, b) ((a) >= (b) ? (b) : (a)) |
| Return the minimum of two specified values. | |
| #define | OSMO_STRINGIFY(x) #x |
| Stringify the contents of a macro, e.g. a port number. | |
| #define | OSMO_VALUE_STRING(x) { x, #x } |
| Make a value_string entry from an enum value name. | |
| #define | osmo_static_assert(exp, name) typedef int dummy##name [(exp) ? 1 : -1] __attribute__((__unused__)); |
| #define | OSMO_SNPRINTF_RET(ret, rem, offset, len) |
| #define | OSMO_ASSERT(exp) |
Typedefs | |
| typedef void(* | osmo_panic_handler_t )(const char *fmt, va_list args) |
| panic handler callback function type | |
Functions | |
| void | osmo_panic (const char *fmt,...) |
| Terminate the current program with a panic. More... | |
| void | osmo_set_panic_handler (osmo_panic_handler_t h) |
| Set the panic handler. More... | |
| const char * | get_value_string (const struct value_string *vs, uint32_t val) |
| get human-readable string for given value More... | |
| const char * | get_value_string_or_null (const struct value_string *vs, uint32_t val) |
| get human-readable string or NULL for given value More... | |
| int | get_string_value (const struct value_string *vs, const char *str) |
| get numeric value for given human-readable string More... | |
| char | osmo_bcd2char (uint8_t bcd) |
| Convert BCD-encoded digit into printable character. More... | |
| uint8_t | osmo_char2bcd (char c) |
| Convert number in ASCII to BCD value. More... | |
| int | osmo_hexparse (const char *str, uint8_t *b, int max_len) |
| Parse a string containing hexadecimal digits. More... | |
| char * | osmo_ubit_dump (const uint8_t *bits, unsigned int len) |
| Convert a sequence of unpacked bits to ASCII string. More... | |
| char * | osmo_hexdump (const unsigned char *buf, int len) |
| Convert binary sequence to hexadecimal ASCII string. More... | |
| char * | osmo_hexdump_nospc (const unsigned char *buf, int len) |
| Convert binary sequence to hexadecimal ASCII string. More... | |
| char * | osmo_osmo_hexdump_nospc (const unsigned char *buf, int len) __attribute__((__deprecated__)) |
| void | osmo_str2lower (char *out, const char *in) |
| void | osmo_str2upper (char *out, const char *in) |
| static void | osmo_talloc_replace_string (void *ctx, char **dst, const char *newstr) |
| int | osmo_constant_time_cmp (const uint8_t *exp, const uint8_t *rel, const int count) |
| Wishful thinking to generate a constant time compare. More... | |
| uint64_t | osmo_decode_big_endian (const uint8_t *data, size_t data_len) |
| Generic retrieval of 1..8 bytes as big-endian uint64_t. More... | |
| uint8_t * | osmo_encode_big_endian (uint64_t value, size_t data_len) |
| Generic big-endian encoding of big endian number up to 64bit. More... | |
| size_t | osmo_strlcpy (char *dst, const char *src, size_t siz) |
| Copy a C-string into a sized buffer. More... | |
| int | osmo_macaddr_parse (uint8_t *out, const char *in) |
| Parse a MAC address from human-readable notation This function parses an ethernet MAC address in the commonly-used hex/colon notation (00:00:00:00:00:00) and generates the binary representation from it. More... | |
| int | osmo_get_macaddr (uint8_t *mac_out, const char *dev_name) |
| Obtain the MAC address of a given network device. More... | |
| static void | osmo_panic_default (const char *fmt, va_list args) |
| static char * | _osmo_hexdump (const unsigned char *buf, int len, char *delim) |
| char | alias ("osmo_hexdump_nospc"))) |
Variables | |
| static osmo_panic_handler_t | osmo_panic_handler = (void*)0 |
| static char | namebuf [255] |
| static char | hexd_buff [4096] |
| static const char | hex_chars [] = "0123456789abcdef" |
| #define OSMO_ASSERT | ( | exp | ) |
Helper macro to terminate when an assertion failes
| [in] | exp | Predicate to verify This function will generate a backtrace and terminate the program if the predicate evaluates to false (0). |
Referenced by _osmo_fsm_inst_dispatch(), log_parse_category_mask(), and osmo_encode_big_endian().
| #define OSMO_GNUC_PREREQ | ( | maj, | |
| min | |||
| ) | 0 |
Check for gcc and version.
| #define OSMO_SNPRINTF_RET | ( | ret, | |
| rem, | |||
| offset, | |||
| len | |||
| ) |
| int get_string_value | ( | const struct value_string * | vs, |
| const char * | str | ||
| ) |
get numeric value for given human-readable string
| [in] | vs | Array of value_string tuples |
| [in] | str | human-readable string |
References value_string::value.
Referenced by log_parse_level().
| const char * get_value_string | ( | const struct value_string * | vs, |
| uint32_t | val | ||
| ) |
get human-readable string for given value
| [in] | vs | Array of value_string tuples |
| [in] | val | Value to be converted |
If val is found in vs, the array's string entry is returned. Otherwise, an "unknown" string containing the actual value is composed in a static buffer that is reused across invocations.
References get_value_string_or_null().
Referenced by log_level_str(), and osmo_fsm_event_name().
| const char * get_value_string_or_null | ( | const struct value_string * | vs, |
| uint32_t | val | ||
| ) |
get human-readable string or NULL for given value
| [in] | vs | Array of value_string tuples |
| [in] | val | Value to be converted |
References value_string::str.
Referenced by get_value_string().
| char osmo_bcd2char | ( | uint8_t | bcd | ) |
Convert BCD-encoded digit into printable character.
| [in] | bcd | A single BCD-encoded digit |
| uint8_t osmo_char2bcd | ( | char | c | ) |
Convert number in ASCII to BCD value.
| [in] | c | ASCII character |
| int osmo_constant_time_cmp | ( | const uint8_t * | exp, |
| const uint8_t * | rel, | ||
| const int | count | ||
| ) |
Wishful thinking to generate a constant time compare.
| [in] | exp | Expected data |
| [in] | rel | Comparison value |
| [in] | count | Number of bytes to compare |
Compare count bytes of exp to rel. Return 0 if they are identical, 1 otherwise. Do not return a mismatch on the first mismatching byte, but always compare all bytes, regardless. The idea is that the amount of matching bytes cannot be inferred from the time the comparison took.
| uint64_t osmo_decode_big_endian | ( | const uint8_t * | data, |
| size_t | data_len | ||
| ) |
Generic retrieval of 1..8 bytes as big-endian uint64_t.
| [in] | data | Input data as byte-array |
| [in] | data_len | Length of data in octets |
This is like osmo_load64be_ext, except that if data_len is less than sizeof(uint64_t), the data is interpreted as the least significant bytes (osmo_load64be_ext loads them as the most significant bytes into the returned uint64_t). In this way, any integer size up to 64 bits can be decoded conveniently by using sizeof(), without the need to call specific numbered functions (osmo_load16, 32, ...).
| uint8_t * osmo_encode_big_endian | ( | uint64_t | value, |
| size_t | data_len | ||
| ) |
Generic big-endian encoding of big endian number up to 64bit.
| [in] | value | unsigned integer value to be stored |
| [in] | data_len | number of octets |
This is like osmo_store64be_ext, except that this returns a static buffer of the result (for convenience, but not threadsafe). If data_len is less than sizeof(uint64_t), only the least significant bytes of value are encoded.
References ARRAY_SIZE, and OSMO_ASSERT.
| int osmo_get_macaddr | ( | uint8_t * | mac_out, |
| const char * | dev_name | ||
| ) |
Obtain the MAC address of a given network device.
| [out] | mac_out | pointer to caller-allocated buffer of 6 bytes |
| [in] | dev_name | string name of the network device |
| char * osmo_hexdump | ( | const unsigned char * | buf, |
| int | len | ||
| ) |
Convert binary sequence to hexadecimal ASCII string.
| [in] | buf | pointer to sequence of bytes |
| [in] | len | length of buf in number of bytes |
This function will print a sequence of bytes as hexadecimal numbers, adding one space character between each byte (e.g. "1a ef d9")
Referenced by msgb_hexdump().
| char * osmo_hexdump_nospc | ( | const unsigned char * | buf, |
| int | len | ||
| ) |
Convert binary sequence to hexadecimal ASCII string.
| [in] | buf | pointer to sequence of bytes |
| [in] | len | length of buf in number of bytes |
This function will print a sequence of bytes as hexadecimal numbers, without any space character between each byte (e.g. "1aefd9")
| int osmo_hexparse | ( | const char * | str, |
| uint8_t * | b, | ||
| int | max_len | ||
| ) |
Parse a string containing hexadecimal digits.
| [in] | str | string containing ASCII encoded hexadecimal digits |
| [out] | b | output buffer |
| [in] | max_len | maximum space in output buffer |
| int osmo_macaddr_parse | ( | uint8_t * | out, |
| const char * | in | ||
| ) |
Parse a MAC address from human-readable notation This function parses an ethernet MAC address in the commonly-used hex/colon notation (00:00:00:00:00:00) and generates the binary representation from it.
| [out] | out | pointer to caller-allocated buffer of 6 bytes |
| [in] | in | pointer to input data as string with hex/colon notation |
| void osmo_panic | ( | const char * | fmt, |
| ... | |||
| ) |
Terminate the current program with a panic.
You can call this function in case some severely unexpected situation is detected and the program is supposed to terminate in a way that reports the fact that it terminates.
The application can register a panic handler function using osmo_set_panic_handler. If it doesn't, a default panic handler function is called automatically.
The default function on most systems will generate a backtrace and then abort() the process.
| void osmo_set_panic_handler | ( | osmo_panic_handler_t | h | ) |
Set the panic handler.
| [in] | h | New panic handler function |
This changes the panic handling function from the currently active function to a new call-back function supplied by the caller.
| size_t osmo_strlcpy | ( | char * | dst, |
| const char * | src, | ||
| size_t | siz | ||
| ) |
Copy a C-string into a sized buffer.
| [in] | src | source string |
| [out] | dst | destination string |
| [in] | siz | size of the dst buffer |
Copy at most siz bytes from src to dst, ensuring that the result is NUL terminated. The NUL character is included in siz, i.e. passing the actual sizeof(*dst) is correct.
|
inlinestatic |
duplicate a string using talloc and release its prior content (if any)
| [in] | ctx | Talloc context to use for allocation |
| [out] | dst | pointer to string, will be updated with ptr to new string |
| [in] | newstr | String that will be copieed to newly allocated string |
| char * osmo_ubit_dump | ( | const uint8_t * | bits, |
| unsigned int | len | ||
| ) |
Convert a sequence of unpacked bits to ASCII string.
| [in] | bits | A sequence of unpacked bits |
| [in] | len | Length of bits |