| #ifndef _H_LOGUPLOAD_CLIENT_KVEXTRACT_H_ |
| #define _H_LOGUPLOAD_CLIENT_KVEXTRACT_H_ |
| |
| #ifdef __cplusplus |
| extern "C" { |
| #endif |
| |
| #include <sys/socket.h> |
| #include <ifaddrs.h> |
| |
| #define MAX_KV_LENGTH 128 |
| |
| #define KV_OK 0 |
| #define KV_FAIL -1 |
| #define KV_NOTHING 1 |
| |
| struct kvpair { |
| char key[MAX_KV_LENGTH]; |
| char value[MAX_KV_LENGTH]; |
| struct kvpair* next_pair; |
| }; |
| |
| struct kvextractparams { |
| const char** interfaces_to_check; |
| int num_interfaces; |
| struct ifaddrs* ifaddr; |
| const char* platform_path; |
| const char* serial_path; |
| const char* logtype; |
| int (*name_info_resolver)(const struct sockaddr* sa, socklen_t salen, |
| char* host, size_t hostlen, char* serv, size_t servlen, int flags); |
| int (*interface_to_mac)(const char* iface, char* buf, int len); |
| }; |
| |
| // Returns KV_OK on success, KV_FAIL on failure and KV_NOTHING if there was |
| // nothing in the file. |
| // pair will point to a malloc'd kvpair if the return value is KV_OK. |
| // The passed in key is set as the key and the data from the file is the |
| // value with trailing whitespace removed. |
| int get_pair_from_file(const char* filepath, const char* key, |
| struct kvpair** pair); |
| |
| // Returns a dynamically allocated kvpair which needs to be freed |
| // with free_kv_pairs after using it. Returns NULL if there's a problem |
| // with extracting the pair information. |
| // This will get pairs for the device model, serial and information |
| // about the network config such as MAC and IPV4/6 addresses. |
| struct kvpair* extract_kv_pairs(struct kvextractparams* params); |
| void free_kv_pairs(struct kvpair* pairs); |
| |
| #ifdef __cplusplus |
| } |
| #endif |
| |
| #endif // _H_LOGUPLOAD_CLIENT_KVEXTRACT_H_ |