diff options
Diffstat (limited to 'bgp-model.lua')
-rw-r--r-- | bgp-model.lua | 67 |
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 + |