aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/.gitignore4
-rw-r--r--src/Makefile15
-rw-r--r--src/lua/.gitignore2
-rw-r--r--src/lua/Makefile63
-rw-r--r--src/lua/lua-client.c (renamed from src/lua-client.c)0
-rw-r--r--src/lua/pingu.lua49
6 files changed, 122 insertions, 11 deletions
diff --git a/src/.gitignore b/src/.gitignore
new file mode 100644
index 0000000..d64c02e
--- /dev/null
+++ b/src/.gitignore
@@ -0,0 +1,4 @@
+*.o
+mtu
+pingu
+pinguctl
diff --git a/src/Makefile b/src/Makefile
index 821295e..bec3e07 100644
--- a/src/Makefile
+++ b/src/Makefile
@@ -25,19 +25,12 @@ INSTALL = install
INSTALLDIR = $(INSTALL) -d
PKG_CONFIG ?= pkg-config
-ifdef LUAPC
-LUA_TARGETS := client.so
-INSTALL_LUA_TARGET := install-lua
-LUA_CFLAGS := $(shell $(PKG_CONFIG) --cflags $(LUAPC))
-LUA_VERSION ?= $(shell $(PKG_CONFIG) --variable V $(LUAPC))
-
-luasharedir := $(datarootdir)/lua/$(LUA_VERSION)
-lualibdir := $(libdir)/lua/$(LUA_VERSION)
+SUBDIRS :=
+ifdef LUAPC
+SUBDIRS += lua
endif
-SUBDIRS :=
-
CFLAGS ?= -g
CFLAGS += -I../
CFLAGS += -DPINGU_VERSION=\"$(PINGU_VERSION)\"
@@ -82,7 +75,7 @@ client.so_LDFLAGS = -shared
ALL_OBJS= $(pingu_OBJS) $(pinguctl_OBJS) $(mtu_OBJS) $(client.so_OBJS)
-all: $(TARGETS)
+all: $(TARGETS) $(SUBDIRS)
%.o: %.c
$(CC) $(CFLAGS) $($@_CFLAGS) -c $<
diff --git a/src/lua/.gitignore b/src/lua/.gitignore
new file mode 100644
index 0000000..5a99f6b
--- /dev/null
+++ b/src/lua/.gitignore
@@ -0,0 +1,2 @@
+client.so
+*.o
diff --git a/src/lua/Makefile b/src/lua/Makefile
new file mode 100644
index 0000000..aab3799
--- /dev/null
+++ b/src/lua/Makefile
@@ -0,0 +1,63 @@
+
+-include ../../config.mk
+
+TARGETS = client.so
+
+prefix ?= /usr/local
+exec_prefix ?= $(prefix)
+localstatedir ?= $(prefix)/var
+libdir ?= $(exec_prefix)/lib
+datarootdir ?= $(prefix)/share
+
+rundir ?= $(localstatedir)/run
+pingustatedir = $(rundir)/pingu
+
+DESTDIR ?=
+
+INSTALL = install
+INSTALLDIR = $(INSTALL) -d
+PKG_CONFIG ?= pkg-config
+
+LUA_CFLAGS := $(shell $(PKG_CONFIG) --cflags $(LUAPC))
+LUA_VERSION ?= $(shell $(PKG_CONFIG) --variable V $(LUAPC))
+
+luasharedir := $(datarootdir)/lua/$(LUA_VERSION)
+lualibdir := $(libdir)/lua/$(LUA_VERSION)
+
+SUBDIRS :=
+
+CFLAGS ?= -g
+CFLAGS += -I../../ -I..
+CFLAGS += -DPINGU_VERSION=\"$(PINGU_VERSION)\"
+CFLAGS += -Wall -Wstrict-prototypes -D_GNU_SOURCE -std=gnu99
+CFLAGS += -DDEFAULT_ADM_client=\"$(pingustatedir)/pingu.ctl\"
+
+
+lua-client.o_CFLAGS = $(LUA_CFLAGS)
+client.so_OBJS = \
+ lua-client.o
+
+client.so_LDFLAGS = -shared
+
+ALL_OBJS= $(client.so_OBJS)
+
+all: $(TARGETS)
+
+%.o: %.c
+ $(CC) $(CFLAGS) $($@_CFLAGS) -c $<
+
+$(TARGETS):
+ $(CC) $(LDFLAGS) $($@_LDFLAGS) $($@_OBJS) $($@_LIBS) -o $@
+
+client.so: $(client.so_OBJS)
+
+install: client.so pingu.lua
+ $(INSTALLDIR) $(DESTDIR)$(luasharedir) \
+ $(DESTDIR)$(lualibdir)/pingu
+ $(INSTALL) pingu.lua $(DESTDIR)$(luasharedir)/
+ $(INSTALL) client.so $(DESTDIR)$(lualibdir)/pingu/
+
+clean:
+ rm -f $(TARGETS) $(ALL_OBJS)
+
+.PHONY: clean all install
diff --git a/src/lua-client.c b/src/lua/lua-client.c
index ad18f30..ad18f30 100644
--- a/src/lua-client.c
+++ b/src/lua/lua-client.c
diff --git a/src/lua/pingu.lua b/src/lua/pingu.lua
new file mode 100644
index 0000000..c29b276
--- /dev/null
+++ b/src/lua/pingu.lua
@@ -0,0 +1,49 @@
+
+module(..., package.seeall)
+
+
+local function run_command(self, cmd)
+ self.handle:write(cmd.."\n")
+ self.handle:flush()
+
+ local t = {}
+ local line = self.handle:read("*line")
+ while line ~= "" do
+ local key, value = string.match(line, "^(.*): (.*)$")
+ t[key] = value
+ line = self.handle:read("*line")
+ end
+ return t
+end
+
+local function host_status(self)
+ return self:run_command("host-status")
+end
+
+local function gateway_status(self)
+ return self:run_command("gateway-status")
+end
+
+local function close(self)
+ return self.handle:close()
+end
+
+function connect(socket_path)
+ local socket = require("pingu.client")
+ local fh, err
+ if socket ~= nil then
+ fh, err = socket.open(socket_path)
+ end
+ if fh == nil then
+ return fh, err
+ end
+ return {
+ ["handle"] = fh,
+ ["run_command"] = run_command,
+ ["host_status"] = host_status,
+ ["gateway_status"] = gateway_status,
+ ["close"] = close
+ }
+end
+
+