• L
    util: capabilities detection for dnsmasq · 719c2c76
    Laine Stump 提交于
    In order to optionally take advantage of new features in dnsmasq when
    the host's version of dnsmasq supports them, but still be able to run
    on hosts that don't support the new features, we need to be able to
    detect the version of dnsmasq running on the host, and possibly
    determine from the help output what options are in this dnsmasq.
    
    This patch implements a greatly simplified version of the capabilities
    code we already have for qemu. A dnsmasqCaps device can be created and
    populated either from running a program on disk, reading a file with
    the concatenated output of "dnsmasq --version; dnsmasq --help", or
    examining a buffer in memory that contains the concatenated output of
    those two commands. Simple functions to retrieve capabilities flags,
    the version number, and the path of the binary are also included.
    
    bridge_driver.c creates a single dnsmasqCaps object at driver startup,
    and disposes of it at driver shutdown. Any time it must be used, the
    dnsmasqCapsRefresh method is called - it checks the mtime of the
    binary, and re-runs the checks if the binary has changed.
    
    networkxml2argvtest.c creates 2 "artificial" dnsmasqCaps objects at
    startup - one "restricted" (doesn't support --bind-dynamic) and one
    "full" (does support --bind-dynamic). Some of the test cases use one
    and some the other, to make sure both code pathes are tested.
    719c2c76
bridge_driver.c 138.6 KB