*.a
*.la
admin
-ngdump
+ngspy
lib/doc/
raw/doc/
*.m4
SUBDIRS = raw lib cli
-#if ENABLE_SPY
-#SUBDIRS += dump
-#endif
+if ENABLE_SPY
+SUBDIRS += spy
+endif
[AS_HELP_STRING([--enable-doc], [enable documentation generation [default=no]])],
[enable_doc=yes], [enable_doc=no])
+# enable/disable build of NgSpy
+AC_ARG_ENABLE(spy,
+ [AS_HELP_STRING([--enable-spy], [enable NgSpy [default=no]])],
+ [enable_spy=yes], [enable_spy=no])
+AM_CONDITIONAL(ENABLE_SPY, test x$enable_spy = xyes)
+
+
if test "x${enable_doc}" = xyes; then
AC_CHECK_PROGS([DOXYGEN], [doxygen])
cli/src/Makefile
])
+AM_COND_IF([ENABLE_SPY], [
+ AC_CONFIG_FILES([
+ spy/Makefile
+ spy/man/Makefile
+ spy/src/Makefile
+ ])
+])
+
+
AC_OUTPUT
Debug..............: ${enable_debug}
Compiler...........: ${CC} ${CFLAGS} ${CPPFLAGS}
Readline suppport..: ${with_readline}
+Spy................: ${enable_spy}
"
+++ /dev/null
-
-CC=gcc
-CFLAGS=-I../raw/include/ -W -Wall -Wextra -Os
-LDFLAGS=-L../raw -lrawnsdp
-EXEC=ngdump
-
-SRC=$(wildcard *.c)
-OBJ=$(SRC:.c=.o)
-
-
-ifeq ($(DEBUG), yes)
-CFLAGS+=-g
-LDFLAGS+=-g
-else
-CFLAGS+=-fomit-frame-pointer
-LDFLAGS+=-s
-endif
-
-
-$(EXEC): $(OBJ)
- $(CC) $^ -o $@ $(LDFLAGS)
-
-%.o: %.c
- $(CC) -c $^ -o $@ $(CFLAGS)
-
-
-clean:
- @rm -f *.o
-
-mrproper: clean
- @rm -f $(EXEC)
-
-
-
+++ /dev/null
-
-#include <stdio.h>
-#include <unistd.h>
-#include <arpa/inet.h>
-
-#include <protocol.h>
-#include <attr.h>
-
-
-int main (void)
-{
- char buffer[1500];
- struct ng_packet np;
- int err = 0, s, len;
- struct sockaddr_in local, remote;
- socklen_t slen = sizeof(struct sockaddr_in);
- unsigned char error;
- unsigned short attr_error;
- List *attr;
- ListNode *ln;
- struct attr *at;
-
-
- s = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP);
- if (s < 0) {
- perror("socket");
- err = 1;
- goto end;
- };
-
-
- memset(&local, 0, sizeof(struct sockaddr_in));
- local.sin_family = AF_INET;
- local.sin_addr.s_addr = htonl(INADDR_ANY);
- local.sin_port = htons(SWITCH_PORT);
-
- if (bind(s, (struct sockaddr*)&local, sizeof(struct sockaddr_in)) < 0) {
- perror("bind");
- err = 2;
- goto end;
- }
-
- while (1) {
-
- len = recvfrom(s, buffer, sizeof(buffer), 0, (struct sockaddr*)&remote, &slen);
- if (len < 0) {
- perror("recvfrom");
- err = 3;
- goto end;
- }
-
- printf("---------------------------------\n");
-
- np.buffer = buffer;
- np.maxlen = len;
- initNgPacket(&np);
-
- attr = createEmptyList();
-
- if (ntohs(remote.sin_port) != CLIENT_PORT ||
- len < (int)sizeof(struct ng_header) ||
- !validateNgHeader(np.nh, 0, NULL, NULL, 0) ||
- extractPacketAttributes(&np, attr, 0) < 0) {
- printf("wrong packet\n");
- goto end;
- }
-
- printf("received %d attribute(s)\n", attr->count);
-
- for (ln = attr->first; ln != NULL; ln = ln->next) {
- at = ln->data;
- printf("received attribute code = %04X, length = %d\n", at->attr, at->size);
- }
-
- destroyList(attr, (void(*)(void*))freeAttr);
-
- printf("---------------------------------\n\n");
- }
-
- close(s);
-
-end:
- return err;
-}
-
--- /dev/null
+
+SUBDIRS = man src
+
--- /dev/null
+
+bin_PROGRAMS = ngspy
+
+ngspy_SOURCES = spy.c
+ngspy_CPPFLAGS = -I$(top_srcdir)/raw/include/
+ngspy_LDADD = $(top_builddir)/raw/src/librawnsdp.la
+
--- /dev/null
+
+#include <stdio.h>
+#include <unistd.h>
+#include <arpa/inet.h>
+
+#include <protocol.h>
+#include <attr.h>
+
+
+int main (void)
+{
+ char buffer[1500];
+ struct ng_packet np;
+ int err = 0, s, len;
+ struct sockaddr_in local, remote;
+ socklen_t slen = sizeof(struct sockaddr_in);
+ unsigned char error;
+ unsigned short attr_error;
+ List *attr;
+ ListNode *ln;
+ struct attr *at;
+
+
+ s = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP);
+ if (s < 0) {
+ perror("socket");
+ err = 1;
+ goto end;
+ };
+
+
+ memset(&local, 0, sizeof(struct sockaddr_in));
+ local.sin_family = AF_INET;
+ local.sin_addr.s_addr = htonl(INADDR_ANY);
+ local.sin_port = htons(SWITCH_PORT);
+
+ if (bind(s, (struct sockaddr*)&local, sizeof(struct sockaddr_in)) < 0) {
+ perror("bind");
+ err = 2;
+ goto end;
+ }
+
+ while (1) {
+
+ len = recvfrom(s, buffer, sizeof(buffer), 0, (struct sockaddr*)&remote, &slen);
+ if (len < 0) {
+ perror("recvfrom");
+ err = 3;
+ goto end;
+ }
+
+ printf("---------------------------------\n");
+
+ np.buffer = buffer;
+ np.maxlen = len;
+ initNgPacket(&np);
+
+ attr = createEmptyList();
+
+ if (ntohs(remote.sin_port) != CLIENT_PORT ||
+ len < (int)sizeof(struct ng_header) ||
+ !validateNgHeader(np.nh, 0, NULL, NULL, 0) ||
+ extractPacketAttributes(&np, attr, 0) < 0) {
+ printf("wrong packet\n");
+ goto end;
+ }
+
+ printf("received %d attribute(s)\n", attr->count);
+
+ for (ln = attr->first; ln != NULL; ln = ln->next) {
+ at = ln->data;
+ printf("received attribute code = %04X, length = %d\n", at->attr, at->size);
+ }
+
+ destroyList(attr, (void(*)(void*))freeAttr);
+
+ printf("---------------------------------\n\n");
+ }
+
+ close(s);
+
+end:
+ return err;
+}
+