| 108 | |
| 109 | |
| 110 | int program(ParsedArgs::Ptr args) |
| 111 | { |
| 112 | std::vector<std::string> exargs = args->GetAllExtraArgs(); |
| 113 | if (exargs.size() != 1) |
| 114 | { |
| 115 | throw CommandException("", "Only one device name can be used"); |
| 116 | } |
| 117 | |
| 118 | auto conn = DBus::Connection::Create(DBus::BusType::SYSTEM); |
| 119 | |
| 120 | auto srmgr = resolved::Manager::Create(conn); |
| 121 | resolved::Link::Ptr link = srmgr->RetrieveLink(exargs[0]); |
| 122 | |
| 123 | std::cout << "systemd-resolved path: " << link->GetPath() << std::endl; |
| 124 | |
| 125 | std::vector<std::string> mod_ops = {"add-resolver4", |
| 126 | "add-resolver6", |
| 127 | "reset-resolver", |
| 128 | "add-search", |
| 129 | "reset-search", |
| 130 | "set-default-route", |
| 131 | "set-dnssec", |
| 132 | "set-dnsovertls", |
| 133 | "revert"}; |
| 134 | bool mods = !args->Present(mod_ops, true).empty(); |
| 135 | if (mods) |
| 136 | { |
| 137 | std::cout << "Before changes: " << std::endl; |
| 138 | } |
| 139 | |
| 140 | print_details(link); |
| 141 | |
| 142 | std::string op = args->Present({"add-resolver4", "add-resolver6", "reset-resolver"}, true); |
| 143 | if (!op.empty()) |
| 144 | { |
| 145 | // Set a new DNS resolver server |
| 146 | resolved::IPAddress::List rslv; |
| 147 | |
| 148 | if (args->Present("add-resolver6")) |
| 149 | { |
| 150 | for (const auto &ip : args->GetAllValues("add-resolver6")) |
| 151 | { |
| 152 | rslv.push_back(resolved::IPAddress(ip, AF_INET6)); |
| 153 | } |
| 154 | } |
| 155 | |
| 156 | if (args->Present("add-resolver4")) |
| 157 | { |
| 158 | for (const auto &ip : args->GetAllValues("add-resolver4")) |
| 159 | { |
| 160 | rslv.push_back(resolved::IPAddress(ip, AF_INET)); |
| 161 | } |
| 162 | } |
| 163 | |
| 164 | link->SetDNSServers(rslv); |
| 165 | } |
| 166 | |
| 167 | if (args->Present("add-search") || args->Present("reset-search")) |
nothing calls this directly
no test coverage detected