mirror of
http://git.haproxy.org/git/haproxy.git/
synced 2025-01-20 20:50:44 +00:00
BUILD/MEDIUM: tcp: set-mark support for OpenBSD
set-mark support for this platform, for routing table purpose.
Follow-up from f7f53afcf9
, this time for OpenBSD.
This commit is contained in:
parent
96a2f50b51
commit
bae4cb2790
@ -6510,7 +6510,8 @@ http-request set-mark <mark> [ { if | unless } <condition> ]
|
||||
both in decimal or hexadecimal format (prefixed by "0x").
|
||||
This can be useful to force certain packets to take a different route (for
|
||||
example a cheaper network path for bulk downloads). This works on Linux
|
||||
kernels 2.6.32 and above and requires admin privileges, as well on FreeBSD.
|
||||
kernels 2.6.32 and above and requires admin privileges, as well on FreeBSD
|
||||
and OpenBSD.
|
||||
|
||||
http-request set-method <fmt> [ { if | unless } <condition> ]
|
||||
|
||||
@ -7171,7 +7172,8 @@ http-response set-mark <mark> [ { if | unless } <condition> ]
|
||||
It can be expressed both in decimal or hexadecimal format (prefixed by "0x").
|
||||
This can be useful to force certain packets to take a different route (for
|
||||
example a cheaper network path for bulk downloads). This works on Linux
|
||||
kernels 2.6.32 and above and requires admin privileges, as well on FreeBSD.
|
||||
kernels 2.6.32 and above and requires admin privileges, as well on FreeBSD
|
||||
and OpenBSD.
|
||||
|
||||
http-response set-nice <nice> [ { if | unless } <condition> ]
|
||||
|
||||
@ -11908,7 +11910,7 @@ tcp-request connection <action> [{if | unless} <condition>]
|
||||
"0x"). This can be useful to force certain packets to take a different
|
||||
route (for example a cheaper network path for bulk downloads). This works
|
||||
on Linux kernels 2.6.32 and above and requires admin privileges, as well
|
||||
on FreeBSD.
|
||||
on FreeBSD and OpenBSD.
|
||||
|
||||
- set-src <expr> :
|
||||
Is used to set the source IP address to the value of specified
|
||||
|
@ -699,6 +699,8 @@ static inline void conn_set_mark(const struct connection *conn, int mark)
|
||||
#elif defined(SO_USER_COOKIE)
|
||||
uint32_t mval = (uint32_t)mark;
|
||||
setsockopt(conn->handle.fd, SOL_SOCKET, SO_USER_COOKIE, &mval, sizeof(mval));
|
||||
#elif defined(SO_RTABLE)
|
||||
setsockopt(conn->handle.fd, SOL_SOCKET, SO_RTABLE, &mark, sizeof(mark));
|
||||
#endif
|
||||
}
|
||||
|
||||
|
@ -237,7 +237,7 @@ static enum act_return tcp_exec_action_silent_drop(struct act_rule *rule, struct
|
||||
}
|
||||
|
||||
|
||||
#if defined(SO_MARK) || defined(SO_USER_COOKIE)
|
||||
#if defined(SO_MARK) || defined(SO_USER_COOKIE) || defined(SO_RTABLE)
|
||||
static enum act_return tcp_action_set_mark(struct act_rule *rule, struct proxy *px,
|
||||
struct session *sess, struct stream *s, int flags)
|
||||
{
|
||||
@ -308,7 +308,7 @@ static enum act_parse_ret tcp_parse_set_src_dst(const char **args, int *orig_arg
|
||||
static enum act_parse_ret tcp_parse_set_mark(const char **args, int *cur_arg, struct proxy *px,
|
||||
struct act_rule *rule, char **err)
|
||||
{
|
||||
#if defined(SO_MARK) || defined(SO_USER_COOKIE)
|
||||
#if defined(SO_MARK) || defined(SO_USER_COOKIE) || defined(SO_RTABLE)
|
||||
char *endp;
|
||||
unsigned int mark;
|
||||
|
||||
@ -331,7 +331,7 @@ static enum act_parse_ret tcp_parse_set_mark(const char **args, int *cur_arg, st
|
||||
global.last_checks |= LSTCHK_NETADM;
|
||||
return ACT_RET_PRS_OK;
|
||||
#else
|
||||
memprintf(err, "not supported on this platform (SO_MARK|SO_USER_COOKIE undefined)");
|
||||
memprintf(err, "not supported on this platform (SO_MARK|SO_USER_COOKIE|SO_RTABLE undefined)");
|
||||
return ACT_RET_PRS_ERR;
|
||||
#endif
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user