summaryrefslogtreecommitdiffstats
path: root/bgp-model.lua
diff options
context:
space:
mode:
Diffstat (limited to 'bgp-model.lua')
-rw-r--r--bgp-model.lua67
1 files changed, 67 insertions, 0 deletions
diff --git a/bgp-model.lua b/bgp-model.lua
new file mode 100644
index 0000000..c1426f9
--- /dev/null
+++ b/bgp-model.lua
@@ -0,0 +1,67 @@
+module(..., package.seeall)
+
+-- Load libraries
+require("modelfunctions")
+
+-- Set variables
+local path="PATH=/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/sbin "
+
+local configfile = "/etc/quagga/bgpd.conf"
+local processname = "bgpd"
+local packagename = "quagga"
+
+-- ################################################################################
+-- LOCAL FUNCTIONS
+
+local function telnetshowipbgp()
+ local output = {}
+ local cmd_output_result, cmd_output_error
+ local cmd = path .. "echo -e 'zebpasswd\nshow ip bgp\nquit\n' | nc localhost bgpd 2>/dev/null"
+ local f = io.popen( cmd )
+ local line = f:read("*l")
+ local validoutput
+ while line do
+ if (string.find(line, "^BGP")) then
+ validoutput = true
+ end
+ if (validoutput) then
+ table.insert(output,line)
+ end
+ if (line) and (string.find(line, "^Total number")) then
+ validoutput = false
+ end
+ line = f:read("*l")
+ end
+ return table.concat(output,"\n"),cmd_output_error
+end
+
+-- ################################################################################
+-- PUBLIC FUNCTIONS
+
+function getstatus()
+ return modelfunctions.getstatus(processname, packagename, "BGP Status")
+end
+
+function getconfigfile()
+ return modelfunctions.getfiledetails(configfile)
+end
+
+function setconfigfile(filedetails)
+ filedetails.value.filename.value = configfile
+ return modelfunctions.setfiledetails(filedetails)
+end
+
+function startstop_service(action)
+ return modelfunctions.startstop_service(processname, action)
+end
+
+function getdetails()
+ local status = {}
+ status.showipbgp = cfe({
+ name="showipbgp",
+ label="BGP routes",
+ })
+ status.showipbgp.value,status.showipbgp.errtxt = telnetshowipbgp()
+ return status
+end
+