diff options
author | Florian Weimer <fweimer@redhat.com> | 2017-07-03 20:31:23 +0200 |
---|---|---|
committer | Florian Weimer <fweimer@redhat.com> | 2017-07-03 20:57:28 +0200 |
commit | f30a54b21b83f254533c59ca72ad17af5249c6be (patch) | |
tree | 174c6e8b77d8fc1514f4108e3290b91d19d838a6 /resolv/resolv_context.h | |
parent | 352f4ff9a268b81ef5d4b2413f582565806e4790 (diff) | |
download | glibc-f30a54b21b83f254533c59ca72ad17af5249c6be.zip glibc-f30a54b21b83f254533c59ca72ad17af5249c6be.tar.gz glibc-f30a54b21b83f254533c59ca72ad17af5249c6be.tar.bz2 |
resolv: Introduce struct resolv_conf with extended resolver state
This change provides additional resolver configuration state which
is not exposed through the _res ABI. It reuses the existing
initstamp field in the supposedly-private part of _res. Some effort
is undertaken to avoid memory safety issues introduced by applications
which directly patch the _res object.
With this commit, only the initstamp field is moved into struct
resolv_conf. Additional members will be added later, eventually
migrating the entire resolver configuration.
Diffstat (limited to 'resolv/resolv_context.h')
-rw-r--r-- | resolv/resolv_context.h | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/resolv/resolv_context.h b/resolv/resolv_context.h index 27c8d56..ff9ef2c 100644 --- a/resolv/resolv_context.h +++ b/resolv/resolv_context.h @@ -40,15 +40,22 @@ #ifndef _RESOLV_CONTEXT_H #define _RESOLV_CONTEXT_H +#include <bits/types/res_state.h> +#include <resolv/resolv_conf.h> #include <stdbool.h> #include <stddef.h> -#include <bits/types/res_state.h> /* Temporary resolver state. */ struct resolv_context { struct __res_state *resp; /* Backing resolver state. */ + /* Extended resolver state. This is set to NULL if the + __resolv_context_get functions are unable to locate an associated + extended state. In this case, the configuration data in *resp + has to be used; otherwise, the data from *conf should be + preferred (because it is a superset). */ + struct resolv_conf *conf; /* The following fields are for internal use within the resolv_context module. */ |