yaml-cpp - problem with create netplan file

26 views Asked by At

I need to generate a *.yaml file using the yaml-cpp library. I have prepared sample code. I managed almost everything, but I have a problem with saving the configuration routes:

  • to: 0.0.0.0 via: 1.1.1.1 How to generate it with yaml-cpp?
tyYAML::Node root;
    root["network"] = YAML::Node(YAML::NodeType::Map);
    YAML::Node versionNode = root["network"];
    versionNode["version"] = "2";
    versionNode["renderer"] = "NetworkManager";
    versionNode["ethernets"] = YAML::Node(YAML::NodeType::Map);
    YAML::Node interfaceNode = versionNode["ethernets"];;
    interfaceNode["enps31f6"] = YAML::Node(YAML::NodeType::Map);
    YAML::Node dhcpNode = interfaceNode["enps31f6"];
    dhcpNode["addresses"].push_back("192.168.1.123");
    YAML::Node dhcp4Node = interfaceNode["enps31f6"];
    dhcp4Node["dhcp4"] = "true";
    YAML::Node dhcp4overridesNode = interfaceNode["enps31f6"];
    dhcp4overridesNode["dhcp4-overrides"] = YAML::Node(YAML::NodeType::Map);
    YAML::Node useDnsNode = dhcp4overridesNode["dhcp4-overrides"];
    useDnsNode["use-dns"] = "true";
    useDnsNode["use-routes"] = "true";
    YAML::Node gatewayNode = interfaceNode["enps31f6"];
    gatewayNode["gateway4"] = "192.168.1.1";
    YAML::Node nameserversNode = interfaceNode["enps31f6"];
    nameserversNode["nameservers"] = YAML::Node(YAML::NodeType::Map);
    YAML::Node addressessNode = nameserversNode["nameservers"];
    addressessNode["addresses"].push_back("0.0.0.0");
    addressessNode["addresses"].push_back("8.8.8.8");
    YAML::Node routesNode = interfaceNode["enps31f6"];
    routesNode["routes"] = YAML::Node(YAML::NodeType::Map);
    YAML::Node toNode = routesNode["routes"];
    toNode["to"] = YAML::Node(YAML::NodeType::Map);
    toNode["to"] = "3.3.3.3";
    //routesNode["routes"].push_back(toNode);

//    YAML::Node viaNode;
//    viaNode["via"] = "9.9.9.9";
//    routesNode["routes"] = viaNode;

    YAML::Emitter emitter;
    emitter << root;

    // zapis pliku
    QFile file("/etc/netplan/test.yaml");

    if(file.open(QIODevice::ReadWrite))
    {
        QTextStream stream(&file);

        stream << emitter.c_str();
        ui->dataOutputTextBrowser->append("save file");
    }
    else
    {
        ui->dataOutputTextBrowser->clear();
        ui->dataOutputTextBrowser->append("no file");
    }pe here

Up to this point the file formats correctly but I don't know about routes: -to: via: Thanks for advices

0

There are 0 answers