Skip to content

Commit

Permalink
refact code, add new files.
Browse files Browse the repository at this point in the history
  • Loading branch information
jsonkey committed Apr 20, 2018
1 parent f55b600 commit de276a4
Show file tree
Hide file tree
Showing 54 changed files with 10,556 additions and 0 deletions.
108 changes: 108 additions & 0 deletions Makefile
Original file line number Diff line number Diff line change
@@ -0,0 +1,108 @@
# Copyright (c) 2018. TIG developer.

ifdef V
Q =
else
Q = @
endif

ifeq ($(machine),)
machine = native
endif

RTE_SDK = $(CURDIR)/dpdk
export RTE_SDK

RTE_TARGET ?= x86_64-native-linuxapp-gcc
export RTE_TARGET

ifeq ($(bindir),)
bindir = /usr/local/jupiter/bin
endif

ifeq ($(tooldir),)
tooldir = /usr/local/jupiter/tool
endif

ifeq ($(kmoddir),)
kmoddir = /usr/local/jupiter/kmod
endif

ifeq ($(confdir),)
confdir = /usr/local/jupiter
endif

VERSION ?= 0.1

.PHONY: all
all: dpdk jupiter

.PHONY: dpdk
dpdk:
$(Q)cd $(RTE_SDK) && $(MAKE) O=$(RTE_TARGET) T=$(RTE_TARGET) config
$(Q)cd $(RTE_SDK) && sed -ri 's,(RTE_MACHINE=).*,\1$(machine),' $(RTE_TARGET)/.config
$(Q)cd $(RTE_SDK) && sed -ri 's,(RTE_APP_TEST=).*,\1n,' $(RTE_TARGET)/.config
$(Q)cd $(RTE_SDK) && sed -ri 's,(RTE_LIBRTE_PMD_PCAP=).*,\1y,' $(RTE_TARGET)/.config
$(Q)cd $(RTE_SDK) && sed -ri 's,(RTE_KNI_KMOD_ETHTOOL=).*,\1n,' $(RTE_TARGET)/.config
$(Q)cd $(RTE_SDK) && $(MAKE) O=$(RTE_TARGET)

.PHONY: jupiter
jupiter:
$(Q)cd lib && $(MAKE) O=$(RTE_TARGET)
$(Q)cd cmd && $(MAKE) O=$(RTE_TARGET)
$(Q)cd core && $(MAKE) O=$(RTE_TARGET)

.PHONY: install
install:
@echo ================== Installing $(DESTDIR)/
$(Q)test -d $(DESTDIR)/$(bindir) || mkdir -p $(DESTDIR)/$(bindir)
$(Q)cp -a cmd/$(RTE_TARGET)/jupiter-ctl $(DESTDIR)/$(bindir)
$(Q)cp -a core/$(RTE_TARGET)/jupiter-service $(DESTDIR)/$(bindir)
$(Q)cp -a $(RTE_SDK)/$(RTE_TARGET)/app/dpdk-pdump $(DESTDIR)/$(bindir)/jupiter-pdump

$(Q)test -d $(DESTDIR)/$(tooldir) || mkdir -p $(DESTDIR)/$(tooldir)
$(Q)cp -a $(RTE_SDK)/usertools/cpu_layout.py $(DESTDIR)/$(tooldir)/cpu_layout.py
$(Q)cp -a $(RTE_SDK)/usertools/dpdk-devbind.py $(DESTDIR)/$(tooldir)/dpdk-devbind.py

$(Q)test -d $(DESTDIR)/$(kmoddir) || mkdir -p $(DESTDIR)/$(kmoddir)
$(Q)cp -a $(RTE_SDK)/$(RTE_TARGET)/kmod/igb_uio.ko $(DESTDIR)/$(kmoddir)/igb_uio.ko
$(Q)cp -a $(RTE_SDK)/$(RTE_TARGET)/kmod/rte_kni.ko $(DESTDIR)/$(kmoddir)/rte_kni.ko

$(Q)test -d $(DESTDIR)/$(confdir) || mkdir -p $(DESTDIR)/$(confdir)
$(Q)cp -a jupiter.cfg $(DESTDIR)/$(confdir)
@echo ================== Installation in $(DESTDIR)/ complete

.PHONY: uninstall
uninstall:
@echo ================== Uninstalling $(DESTDIR)/
$(Q)$(if test -d $(DESTDIR)/$(bindir)/jupiter-ctl, rm -rf $(DESTDIR)/$(bindir)/jupiter-ctl,)
$(Q)$(if test -d $(DESTDIR)/$(bindir)/jupiter-service, rm -rf $(DESTDIR)/$(bindir)/jupiter-service,)
$(Q)$(if test -d $(DESTDIR)/$(bindir)/jupiter-pdump, rm -rf $(DESTDIR)/$(bindir)/jupiter-pdump,)
$(Q)$(if test -d $(DESTDIR)/$(tooldir)/cpu_layout.py, rm -rf $(DESTDIR)/$(tooldir)/cpu_layout.py,)
$(Q)$(if test -d $(DESTDIR)/$(tooldir)/dpdk-devbind.py, rm -rf $(DESTDIR)/$(tooldir)/dpdk-devbind.py,)
$(Q)$(if test -d $(DESTDIR)/$(kmoddir)/igb_uio.ko, rm -rf $(DESTDIR)/$(kmoddir)/igb_uio.ko,)
$(Q)$(if test -d $(DESTDIR)/$(kmoddir)/rte_kni.ko, rm -rf $(DESTDIR)/$(kmoddir)/rte_kni.ko,)
$(Q)$(if test -d $(DESTDIR)/$(confdir)/jupiter.cfg, rm -rf $(DESTDIR)/$(confdir)/jupiter.cfg,)
@echo ================== Uninstallation in $(DESTDIR)/ complete

.PHONY: rpm-pkg
rpm-pkg:
$(Q)$(if test -d rpmbuild, rm -rf rpmbuild,)
$(Q)$(if test -e jupiter-$(VERSION).tar.xz, rm -rf jupiter-$(VERSION).tar.xz,)
$(Q)tar -cf jupiter-$(VERSION).tar.xz --xform 's#^#jupiter-$(VERSION)/#' *
$(Q)mkdir -p rpmbuild/{RPMS,SRPMS,BUILD,SOURCES,SPECS}
$(Q)mv jupiter-$(VERSION).tar.xz rpmbuild/SOURCES/jupiter-$(VERSION).tar.xz
$(Q)cp rpm.spec rpmbuild/SPECS
$(Q)rpmbuild -bb \
--define "_topdir $(PWD)/rpmbuild" \
--define "_version $(VERSION)" \
--define "_machine $(machine)" \
rpmbuild/SPECS/rpm.spec


.PHONY: clean
clean:
$(Q)cd $(RTE_SDK) && $(MAKE) O=$(RTE_TARGET) clean
$(Q)cd lib && $(MAKE) O=$(RTE_TARGET) clean
$(Q)cd cmd && $(MAKE) O=$(RTE_TARGET) clean
$(Q)cd core && $(MAKE) O=$(RTE_TARGET) clean
21 changes: 21 additions & 0 deletions cmd/Makefile
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
# Copyright (c) 2018. TIG developer.

ifeq ($(RTE_SDK),)
$(error "Please define RTE_SDK environment variable")
endif

# Default target, can be overriden by command line or environment
include $(RTE_SDK)/mk/rte.vars.mk

# binary name
APP = jupiter-ctl

# all source are stored in SRCS-y
SRCS-y := main.c

CFLAGS += $(WERROR_FLAGS) -g -O3

CFLAGS += -I$(SRCDIR)/../lib/libcmd/$(RTE_TARGET)/include
LDLIBS += -L$(SRCDIR)/../lib/libcmd/$(RTE_TARGET)/lib -lcmd

include $(RTE_SDK)/mk/rte.extapp.mk
59 changes: 59 additions & 0 deletions cmd/main.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
/* Copyright (c) 2018. TIG developer. */

#include <stdio.h>
#include <string.h>

#include "unixctl_command.h"

static const char *default_unix_sock_path = "/var/run/jupiter.sock";

static void
usage(const char *progname) {
printf("Usage: %s COMMAND [ARG...] [--unixsock=%s]\n", progname,
default_unix_sock_path);
}

static const char *
parse_progname(const char *arg) {
char *p;
if ((p = strrchr(arg, '/')) != NULL)
return strdup(p + 1);
return strdup(arg);
}

int
main(int argc, char **argv) {
const char *unix_sock_path = NULL;
char cmdline[1024] = {0};
int client, ret;
int i;

for (i = 1; i < argc; i++) {
if (strncmp("--unixsock=", argv[i], strlen("--unixsock=")) == 0) {
unix_sock_path = strdup(argv[i] + strlen("--unixsock="));
} else {
strcat(cmdline, argv[i]);
strcat(cmdline, " ");
}
}
if (!unix_sock_path)
unix_sock_path = default_unix_sock_path;
if (strlen(cmdline) == 0) {
const char *progname;
progname = parse_progname(argv[0]);
usage(progname);
strcat(cmdline, " ");
}
client = unixctl_client_create(unix_sock_path);
if (client < 0) {
fprintf(stderr, "Create unix socket client failed.\n");
return -1;
}
ret = unixctl_client_request(client, cmdline);
if (ret < 0) {
fprintf(stderr, "Unable to request unix socket server.\n");
return -1;
}
return ret != 0 ? -1 : 0;
}

30 changes: 30 additions & 0 deletions core/Makefile
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
# Copyright (c) 2018. TIG developer.

ifeq ($(RTE_SDK),)
$(error "Please define RTE_SDK environment variable")
endif

ifeq ($(RTE_TARGET),)
$(error "Please define RTE_TARGET environment variable")
endif

include $(RTE_SDK)/mk/rte.vars.mk

# binary name
APP = jupiter-service

# all source are stored in SRCS-y
SRCS-y := main.c lb_device.c lb_arp.c lb_parser.c lb_service.c lb_scheduler.c \
lb_conn.c lb_proto.c lb_proto_tcp.c lb_toa.c lb_synproxy.c \
lb_proto_udp.c lb_proto_icmp.c lb_tcp_secret_seq.c \
lb_config.c

CFLAGS += $(WERROR_FLAGS) -g -O3

CFLAGS += -I$(SRCDIR)/../lib/libconhash/$(RTE_TARGET)/include
LDLIBS += -L$(SRCDIR)/../lib/libconhash/$(RTE_TARGET)/lib -lconhash

CFLAGS += -I$(SRCDIR)/../lib/libcmd/$(RTE_TARGET)/include
LDLIBS += -L$(SRCDIR)/../lib/libcmd/$(RTE_TARGET)/lib -lcmd

include $(RTE_SDK)/mk/rte.extapp.mk
Loading

0 comments on commit de276a4

Please sign in to comment.