diff --git a/MakeRemote b/MakeRemote index 586cbf8..2f5885b 100644 --- a/MakeRemote +++ b/MakeRemote @@ -8,6 +8,13 @@ CFLAGS += -O3 -Wall -pthread ALL = libpigpiod_if.so libpigpiod_if2.so pigs x_pigpiod_if x_pigpiod_if2 +prefix = /usr/local +exec_prefix = $(prefix) +bindir = $(exec_prefix)/bin +includedir = $(prefix)/include +libdir = $(prefix)/lib +mandir = $(prefix)/man + all: $(ALL) pigpio.py setup.py pigpiod_if.o: pigpiod_if.c pigpio.h command.h pigpiod_if.h @@ -32,37 +39,37 @@ clean: rm -f *.o *.i *.s *~ $(ALL) install: $(LIB1) $(LIB2) - install -m 0755 -d /usr/local/include - install -m 0644 pigpio.h /usr/local/include - install -m 0644 pigpiod_if.h /usr/local/include - install -m 0644 pigpiod_if2.h /usr/local/include - install -m 0755 -d /usr/local/lib - install -m 0644 libpigpiod_if.so /usr/local/lib - install -m 0644 libpigpiod_if2.so /usr/local/lib - install -m 0755 -d /usr/local/bin - install -m 0755 pigs /usr/local/bin + install -m 0755 -d $(DESTDIR)$(includedir) + install -m 0644 pigpio.h $(DESTDIR)$(includedir) + install -m 0644 pigpiod_if.h $(DESTDIR)$(includedir) + install -m 0644 pigpiod_if2.h $(DESTDIR)$(includedir) + install -m 0755 -d $(DESTDIR)$(libdir) + install -m 0644 libpigpiod_if.so $(DESTDIR)$(libdir) + install -m 0644 libpigpiod_if2.so $(DESTDIR)$(libdir) + install -m 0755 -d $(DESTDIR)$(bindir) + install -m 0755 pigs $(DESTDIR)$(bindir) python2 setup.py install python3 setup.py install - install -m 0755 -d /usr/local/man/man1 - install -m 0644 *.1 /usr/local/man/man1 - install -m 0755 -d /usr/local/man/man3 - install -m 0644 *.3 /usr/local/man/man3 + install -m 0755 -d $(DESTDIR)$(mandir)/man1 + install -m 0644 *.1 $(DESTDIR)$(mandir)/man1 + install -m 0755 -d $(DESTDIR)$(mandir)/man3 + install -m 0644 *.3 $(DESTDIR)$(mandir)/man3 uninstall: - rm -f /usr/local/include/pigpio.h - rm -f /usr/local/include/pigpiod_if.h - rm -f /usr/local/include/pigpiod_if2.h - rm -f /usr/local/lib/libpigpiod_if.so - rm -f /usr/local/lib/libpigpiod_if2.so + rm -f $(DESTDIR)$(includedir)/pigpio.h + rm -f $(DESTDIR)$(includedir)/pigpiod_if.h + rm -f $(DESTDIR)$(includedir)/pigpiod_if2.h + rm -f $(DESTDIR)$(libdir)/libpigpiod_if.so + rm -f $(DESTDIR)$(libdir)/libpigpiod_if2.so echo removing python2 files python2 setup.py install --record /tmp/pigpio >/dev/null xargs rm -f < /tmp/pigpio >/dev/null echo removing python3 files python3 setup.py install --record /tmp/pigpio >/dev/null xargs rm -f < /tmp/pigpio >/dev/null - rm -f /usr/local/bin/pigs - rm -f /usr/local/man/man1/pig*.1 - rm -f /usr/local/man/man3/pig*.3 + rm -f $(DESTDIR)$(bindir)/pigs + rm -f $(DESTDIR)$(mandir)/man1/pig*.1 + rm -f $(DESTDIR)$(mandir)/man3/pig*.3 LL1 = -L. -lpigpiod_if -pthread -lrt LL2 = -L. -lpigpiod_if2 -pthread -lrt diff --git a/Makefile b/Makefile index 5a0ba83..5b3bb99 100644 --- a/Makefile +++ b/Makefile @@ -27,6 +27,13 @@ LL2 = -L. -lpigpiod_if -pthread -lrt LL3 = -L. -lpigpiod_if2 -pthread -lrt +prefix = /usr/local +exec_prefix = $(prefix) +bindir = $(exec_prefix)/bin +includedir = $(prefix)/include +libdir = $(prefix)/lib +mandir = $(prefix)/man + all: $(ALL) pigpio.o: pigpio.c pigpio.h command.h custom.cext @@ -63,41 +70,41 @@ clean: rm -f *.o *.i *.s *~ $(ALL) install: $(ALL) - install -m 0755 -d /opt/pigpio/cgi - install -m 0755 -d /usr/local/include - install -m 0644 pigpio.h /usr/local/include - install -m 0644 pigpiod_if.h /usr/local/include - install -m 0644 pigpiod_if2.h /usr/local/include - install -m 0755 -d /usr/local/lib - install -m 0755 libpigpio.so /usr/local/lib - install -m 0755 libpigpiod_if.so /usr/local/lib - install -m 0755 libpigpiod_if2.so /usr/local/lib - install -m 0755 -d /usr/local/bin - install -m 0755 -s pig2vcd /usr/local/bin - install -m 0755 -s pigpiod /usr/local/bin - install -m 0755 -s pigs /usr/local/bin + install -m 0755 -d $(DESTDIR)/opt/pigpio/cgi + install -m 0755 -d $(DESTDIR)$(includedir) + install -m 0644 pigpio.h $(DESTDIR)$(includedir) + install -m 0644 pigpiod_if.h $(DESTDIR)$(includedir) + install -m 0644 pigpiod_if2.h $(DESTDIR)$(includedir) + install -m 0755 -d $(DESTDIR)$(libdir) + install -m 0755 libpigpio.so $(DESTDIR)$(libdir) + install -m 0755 libpigpiod_if.so $(DESTDIR)$(libdir) + install -m 0755 libpigpiod_if2.so $(DESTDIR)$(libdir) + install -m 0755 -d $(DESTDIR)$(bindir) + install -m 0755 -s pig2vcd $(DESTDIR)$(bindir) + install -m 0755 -s pigpiod $(DESTDIR)$(bindir) + install -m 0755 -s pigs $(DESTDIR)$(bindir) if which python2; then python2 setup.py install; fi if which python3; then python3 setup.py install; fi - install -m 0755 -d /usr/local/man/man1 - install -m 0644 *.1 /usr/local/man/man1 - install -m 0755 -d /usr/local/man/man3 - install -m 0644 *.3 /usr/local/man/man3 + install -m 0755 -d $(DESTDIR)$(mandir)/man1 + install -m 0644 *.1 $(DESTDIR)$(mandir)/man1 + install -m 0755 -d $(DESTDIR)$(mandir)/man3 + install -m 0644 *.3 $(DESTDIR)$(mandir)/man3 ldconfig uninstall: - rm -f /usr/local/include/pigpio.h - rm -f /usr/local/include/pigpiod_if.h - rm -f /usr/local/include/pigpiod_if2.h - rm -f /usr/local/lib/libpigpio.so - rm -f /usr/local/lib/libpigpiod_if.so - rm -f /usr/local/lib/libpigpiod_if2.so - rm -f /usr/local/bin/pig2vcd - rm -f /usr/local/bin/pigpiod - rm -f /usr/local/bin/pigs + rm -f $(DESTDIR)$(includedir)/pigpio.h + rm -f $(DESTDIR)$(includedir)/pigpiod_if.h + rm -f $(DESTDIR)$(includedir)/pigpiod_if2.h + rm -f $(DESTDIR)$(libdir)/libpigpio.so + rm -f $(DESTDIR)$(libdir)/libpigpiod_if.so + rm -f $(DESTDIR)$(libdir)/libpigpiod_if2.so + rm -f $(DESTDIR)$(bindir)/pig2vcd + rm -f $(DESTDIR)$(bindir)/pigpiod + rm -f $(DESTDIR)$(bindir)/pigs if which python2; then python2 setup.py install --record /tmp/pigpio >/dev/null; xargs rm -f < /tmp/pigpio >/dev/null; fi if which python3; then python3 setup.py install --record /tmp/pigpio >/dev/null; xargs rm -f < /tmp/pigpio >/dev/null; fi - rm -f /usr/local/man/man1/pig*.1 - rm -f /usr/local/man/man3/pig*.3 + rm -f $(DESTDIR)$(mandir)/man1/pig*.1 + rm -f $(DESTDIR)$(mandir)/man3/pig*.3 ldconfig $(LIB1): $(OBJ1) diff --git a/pigpio.c b/pigpio.c index 1f4271a..4577eca 100644 --- a/pigpio.c +++ b/pigpio.c @@ -7496,7 +7496,14 @@ int initInitialise(void) if (portStr) port = atoi(portStr); else port = gpioCfg.socketPort; server.sin_family = AF_INET; - server.sin_addr.s_addr = INADDR_ANY; + if (gpioCfg.ifFlags & PI_LOCALHOST_SOCK_IF) + { + server.sin_addr.s_addr = htonl(INADDR_LOOPBACK); + } + else + { + server.sin_addr.s_addr = htonl(INADDR_ANY); + } server.sin_port = htons(port); if (bind(fdSock,(struct sockaddr *)&server , sizeof(server)) < 0) @@ -11508,7 +11515,7 @@ int gpioCfgInterfaces(unsigned ifFlags) CHECK_NOT_INITED; - if (ifFlags > 3) + if (ifFlags > 7) SOFT_ERROR(PI_BAD_IF_FLAGS, "bad ifFlags (%X)", ifFlags); gpioCfg.ifFlags = ifFlags; diff --git a/pigpio.h b/pigpio.h index 288e1f4..c92157d 100644 --- a/pigpio.h +++ b/pigpio.h @@ -731,8 +731,9 @@ typedef void *(gpioThreadFunc_t) (void *); /* ifFlags: */ -#define PI_DISABLE_FIFO_IF 1 -#define PI_DISABLE_SOCK_IF 2 +#define PI_DISABLE_FIFO_IF 1 +#define PI_DISABLE_SOCK_IF 2 +#define PI_LOCALHOST_SOCK_IF 4 /* memAllocMode */ diff --git a/pigpiod.c b/pigpiod.c index 95be3d4..7b9074c 100644 --- a/pigpiod.c +++ b/pigpiod.c @@ -93,6 +93,7 @@ void usage() " -e value, secondary DMA channel, 0-6, default 5\n" \ " -f, disable fifo interface, default enabled\n" \ " -k, disable socket interface, default enabled\n" \ + " -l, localhost socket only default all interfaces\n" \ " -p value, socket port, 1024-32000, default 8888\n" \ " -s value, sample rate, 1, 2, 4, 5, 8, or 10, default 5\n" \ " -t value, clock peripheral, 0=PWM 1=PCM, default PCM\n" \ @@ -120,7 +121,7 @@ static void initOpts(int argc, char *argv[]) int opt, err, i; int64_t mask; - while ((opt = getopt(argc, argv, "a:b:c:d:e:fkp:s:t:x:")) != -1) + while ((opt = getopt(argc, argv, "a:b:c:d:e:fklp:s:t:x:")) != -1) { switch (opt) { @@ -167,6 +168,10 @@ static void initOpts(int argc, char *argv[]) ifFlags |= PI_DISABLE_SOCK_IF; break; + case 'l': + ifFlags |= PI_LOCALHOST_SOCK_IF; + break; + case 'p': i = getNum(optarg, &err); if ((i >= PI_MIN_SOCKET_PORT) && (i <= PI_MAX_SOCKET_PORT))