add-port-forwarding 1011 B

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. #!/usr/bin/badvpn-ncd
  2. process main {
  3. getargs() args;
  4. value(args) args;
  5. num_different(args.length, "4") bad_args;
  6. If (bad_args) {
  7. println("Usage: add-port-forwarding <protocol> <port_start> <port_end> <dest_addr>");
  8. exit("1");
  9. };
  10. args->get("0") protocol;
  11. args->get("1") port_start;
  12. args->get("2") port_end;
  13. args->get("3") dest_addr;
  14. var("0") exit_status;
  15. sys.request_client({"unix", "/run/ncd-control.socket"}) client;
  16. var({"add-port-forwarding", protocol, port_start, port_end, dest_addr}) request_data;
  17. client->request(request_data, "reply_handler", "finished_handler", {});
  18. }
  19. template reply_handler {
  20. value(_reply.data) reply_data;
  21. reply_data->get("0") status;
  22. reply_data->get("1") text;
  23. val_equal(status, "ok") is_ok;
  24. If (is_ok) {
  25. println(text);
  26. } Else {
  27. _caller.exit_status->set("1");
  28. println("Error: ", text);
  29. };
  30. }
  31. template finished_handler {
  32. exit(_caller.exit_status);
  33. }