haproxy/src
KOVACS Krisztian b3e54fe387 MAJOR: namespace: add Linux network namespace support
This patch makes it possible to create binds and servers in separate
namespaces.  This can be used to proxy between multiple completely independent
virtual networks (with possibly overlapping IP addresses) and a
non-namespace-aware proxy implementation that supports the proxy protocol (v2).

The setup is something like this:

net1 on VLAN 1 (namespace 1) -\
net2 on VLAN 2 (namespace 2) -- haproxy ==== proxy (namespace 0)
net3 on VLAN 3 (namespace 3) -/

The proxy is configured to make server connections through haproxy and sending
the expected source/target addresses to haproxy using the proxy protocol.

The network namespace setup on the haproxy node is something like this:

= 8< =
$ cat setup.sh
ip netns add 1
ip link add link eth1 type vlan id 1
ip link set eth1.1 netns 1
ip netns exec 1 ip addr add 192.168.91.2/24 dev eth1.1
ip netns exec 1 ip link set eth1.$id up
...
= 8< =

= 8< =
$ cat haproxy.cfg
frontend clients
  bind 127.0.0.1:50022 namespace 1 transparent
  default_backend scb

backend server
  mode tcp
  server server1 192.168.122.4:2222 namespace 2 send-proxy-v2
= 8< =

A bind line creates the listener in the specified namespace, and connections
originating from that listener also have their network namespace set to
that of the listener.

A server line either forces the connection to be made in a specified
namespace or may use the namespace from the client-side connection if that
was set.

For more documentation please read the documentation included in the patch
itself.

Signed-off-by: KOVACS Tamas <ktamas@balabit.com>
Signed-off-by: Sarkozi Laszlo <laszlo.sarkozi@balabit.com>
Signed-off-by: KOVACS Krisztian <hidden@balabit.com>
2014-11-21 07:51:57 +01:00
..
acl.c CLEANUP: acl: cleanup some of the redundancy and spaghetti after last fix 2014-08-29 19:13:32 +02:00
appsession.c BUILD: definitely silence some stupid GCC warnings 2013-12-13 15:21:36 +01:00
arg.c MINOR: arg: improve wording on error reporting 2013-12-13 00:38:47 +01:00
auth.c BUG/MEDIUM: auth: fix segfault with http-auth and a configuration with an unknown encryption algorithm 2014-08-29 21:06:31 +02:00
backend.c MAJOR: namespace: add Linux network namespace support 2014-11-21 07:51:57 +01:00
base64.c [MINOR] add encode/decode function for 30-bit integers from/to base64 2010-10-30 19:04:33 +02:00
buffer.c BUG/MAJOR: buffer: check the space left is enough or not when input data in a buffer is wrapped 2014-10-31 07:39:34 +01:00
cfgparse.c MAJOR: namespace: add Linux network namespace support 2014-11-21 07:51:57 +01:00
channel.c BUG/MEDIUM: channel: bi_putblk() must not wrap before the end of buffer 2014-04-24 17:19:21 +02:00
checks.c BUG/MEDIUM: checks: fix conflicts between agent checks and ssl healthchecks 2014-11-16 00:53:12 +01:00
chunk.c BUG/MINOR: chunk: Fix function chunk_strcmp and chunk_strcasecmp match a substring. 2014-05-09 19:16:13 +02:00
compression.c BUG/MINOR: compression: correctly report incoming byte count 2014-04-23 19:31:17 +02:00
connection.c MAJOR: namespace: add Linux network namespace support 2014-11-21 07:51:57 +01:00
cttproxy.c CLEANUP: cttproxy: remove a warning on undeclared close() 2012-10-05 22:18:07 +02:00
dumpstats.c BUG/MAJOR: cli: explicitly call cli_release_handler() upon error 2014-10-22 19:25:30 +02:00
ev_epoll.c BUG/MEDIUM: polling: fix possible CPU hogging of worker processes after receiving SIGUSR1. 2014-05-20 14:57:36 +02:00
ev_kqueue.c MINOR: polling: create function fd_compute_new_polled_status() 2014-01-26 00:42:32 +01:00
ev_poll.c MINOR: polling: create function fd_compute_new_polled_status() 2014-01-26 00:42:32 +01:00
ev_select.c MINOR: polling: create function fd_compute_new_polled_status() 2014-01-26 00:42:32 +01:00
fd.c BUG/MEDIUM: polling: fix possible CPU hogging of worker processes after receiving SIGUSR1. 2014-05-20 14:57:36 +02:00
freq_ctr.c BUG/MINOR: time: frequency counters are not totally accurate 2012-12-29 21:50:07 +01:00
frontend.c BUG/MAJOR: frontend: initialize capture pointers earlier 2014-11-18 18:53:43 +01:00
haproxy-systemd-wrapper.c BUG/MEDIUM: remove debugging code from systemd-wrapper 2014-09-24 12:59:25 +02:00
haproxy.c MAJOR: namespace: add Linux network namespace support 2014-11-21 07:51:57 +01:00
hash.c BUG/MEDIUM: backend: Update hash to use unsigned int throughout 2014-07-08 22:00:21 +02:00
hdr_idx.c OPTIM/MINOR: move the hdr_idx pools out of the proxy struct 2011-10-24 18:15:04 +02:00
i386-linux-vsys.c MEDIUM: listener: add support for linux's accept4() syscall 2012-10-08 20:11:03 +02:00
lb_chash.c REORG/MEDIUM: server: split server state and flags in two different variables 2014-05-22 11:27:00 +02:00
lb_fas.c REORG/MEDIUM: server: split server state and flags in two different variables 2014-05-22 11:27:00 +02:00
lb_fwlc.c REORG/MEDIUM: server: split server state and flags in two different variables 2014-05-22 11:27:00 +02:00
lb_fwrr.c REORG/MEDIUM: server: split server state and flags in two different variables 2014-05-22 11:27:00 +02:00
lb_map.c MINOR: server: make use of srv_is_usable() instead of checking eweight 2014-05-23 14:29:11 +02:00
listener.c MEDIUM: listener: support rebinding during resume() 2014-07-08 01:13:35 +02:00
log.c MINOR: log: add a new field "%lc" to implement a per-frontend log counter 2014-08-28 15:08:14 +02:00
map.c BUG/MEDIUM: patterns: last fix was still not enough 2014-04-28 14:19:17 +02:00
memory.c MINOR: cli: add the new "show pools" command 2014-01-28 16:50:35 +01:00
namespace.c MAJOR: namespace: add Linux network namespace support 2014-11-21 07:51:57 +01:00
pattern.c BUG/MINOR: pattern: remove useless allocation of unused trash in pat_parse_reg() 2014-08-29 15:19:33 +02:00
payload.c BUG/MINOR: acl: req_ssl_sni fails with SSLv3 record version 2014-04-10 23:30:59 +02:00
peers.c BUG/MEDIUM: peers: fix key consistency for integer stick tables 2014-02-16 08:14:16 +01:00
pipe.c BUILD/MINOR: silent a build warning in src/pipe.c (fcntl) 2011-10-24 17:09:22 +02:00
proto_http.c BUG/MINOR: log: fix request flags when keep-alive is enabled 2014-10-22 22:37:30 +02:00
proto_tcp.c MAJOR: namespace: add Linux network namespace support 2014-11-21 07:51:57 +01:00
proto_uxst.c BUG/MEDIUM: unix: completely unbind abstract sockets during a pause() 2014-07-08 01:13:35 +02:00
protocol.c REORG: split "protocols" files into protocol and listener 2012-09-15 22:29:32 +02:00
proxy.c BUG/MEDIUM: http: adjust close mode when switching to backend 2014-09-30 18:44:22 +02:00
queue.c MINOR: server: make use of srv_is_usable() instead of checking eweight 2014-05-23 14:29:11 +02:00
raw_sock.c BUG/MINOR: raw_sock: also consider ENOTCONN in addition to EAGAIN for recv() 2014-03-04 07:27:18 +01:00
rbtree.c [MINOR] imported the rbtree function from Linux kernel 2007-01-07 02:12:57 +01:00
regex.c MEDIUM: regex: Use pcre_study always when PCRE is used, regardless of JIT 2014-11-18 13:26:18 +01:00
sample.c MINOR: sample: add "json" converter 2014-10-26 06:41:12 +01:00
server.c MAJOR: namespace: add Linux network namespace support 2014-11-21 07:51:57 +01:00
session.c MAJOR: namespace: add Linux network namespace support 2014-11-21 07:51:57 +01:00
sessionhash.c [PATCH] appsessions: cleanup DEBUG_HASH and initialize request_counter 2008-08-13 23:43:26 +02:00
shctx.c MINOR: stats: add counters for SSL cache lookups and misses 2014-05-28 16:53:04 +02:00
signal.c BUG/MEDIUM: signal: signal handler does not properly check for signal bounds 2013-01-24 16:19:19 +01:00
ssl_sock.c BUG/MEDIUM: checks: fix conflicts between agent checks and ssl healthchecks 2014-11-16 00:53:12 +01:00
standard.c MINOR: sample: add "json" converter 2014-10-26 06:41:12 +01:00
stick_table.c BUG/MAJOR: tcp: fix a possible busy spinning loop in content track-sc* 2014-07-30 08:56:35 +02:00
stream_interface.c BUG/CRITICAL: http: don't update msg->sov once data start to leave the buffer 2014-09-02 16:48:54 +02:00
task.c [OPTIM] task: don't scan the run queue if we know it's empty 2011-09-10 20:08:49 +02:00
time.c BUG/MINOR: time: frequency counters are not totally accurate 2012-12-29 21:50:07 +01:00
trace.c MINOR: add a new function call tracer for debugging purposes 2012-05-26 00:12:37 +02:00
uri_auth.c BUG/MEDIUM: uri_auth: missing NULL check and memory leak on memory shortage 2013-01-24 16:19:19 +01:00