In linux, normally, it is impossible to "bind()" to the same TCP port twice. If you try to bind to the same port from second proces unix processes you'll see:
socket.error: [Errno 98] Address already in use
diff --git a/build.sh b/build.sh | |
index 112e404..2974fdc 100755 | |
--- a/build.sh | |
+++ b/build.sh | |
@@ -31,7 +31,7 @@ else | |
USE_LIBS="-lpcap $LIBS" | |
fi | |
-OBJFILES="api.c process.c fp_tcp.c fp_mtu.c fp_http.c readfp.c" | |
+OBJFILES="api.c process.c fp_tcp.c fp_mtu.c fp_http.c fp_ssl.c readfp.c" |
import logging | |
import socket | |
log = logging.getLogger('udp_server') | |
def udp_server(host='127.0.0.1', port=1234): | |
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) | |
s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) |
#!/bin/bash | |
set -e | |
echo "[+] Clearling old mptcp endpoints" | |
for i in `ip mptcp endpoint show|cut -d " " -f 3`; do | |
ip mptcp endpoint delete id $i; | |
done | |
declare -A OLD |
#!/usr/bin/env python | |
import collections | |
import itertools | |
import sys | |
import string | |
import array | |
def load_memory(filename): | |
regs = {} |
#!/bin/bash | |
set -e | |
set -u | |
set -o pipefail | |
IFACE="lo" | |
LATENCY=200 | |
CLEAN="" | |
IPS=() |
.PHONY: repro | |
repro: | |
$(CLANG) -Wall -Wextra -O2 --target=bpf -c -g \ | |
repro.bpf.c \ | |
-o repro.bpf.o | |
bpftool gen skeleton repro.bpf.o > repro.bpf.skel.h | |
$(CLANG) -Wall -fno-omit-frame-pointer -Wextra -O2 -g \ | |
repro.c \ | |
-lbpf \ | |
-lelf \ |
#!/usr/bin/gnuplot -c | |
set terminal pngcairo transparent enhanced linewidth 2 font 'Helvetica,15' size 2000, 1200 background rgb 'white' | |
set xtics nomirror rotate by -45 | |
set ytics nomirror | |
set grid ytics | |
set grid xtics | |
set ylabel "Bytes" | |
set datafile separator "," | |
set output ARG3 | |
set key autotitle columnheader outside |
all: | |
clang -g -O2 -Wall -Wextra net.c send.c -o send | |
clang -g -O2 -Wall -Wextra net.c receive.c -o receive | |
clang -g -O2 -Wall -Wextra net.c proxy-naive.c -o proxy-naive | |
clang -g -O2 -Wall -Wextra net.c proxy-splice.c -o proxy-splice |
rm .config | |
make tinyconfig | |
make kvm_guest.config | |
make kvmconfig | |
./scripts/config \ | |
-e EARLY_PRINTK \ | |
-e 64BIT \ | |
-e BPF -d EMBEDDED -d EXPERT \ | |
-e INOTIFY_USER |