aboutsummaryrefslogtreecommitdiffstats
path: root/include/net
diff options
context:
space:
mode:
authorLaszlo Attila Toth <panther@balabit.hu>2008-01-30 22:08:16 -0500
committerDavid S. Miller <davem@davemloft.net>2008-01-31 22:27:19 -0500
commit4a19ec5800fc3bb64e2d87c4d9fdd9e636086fe0 (patch)
tree610bd4e7dbcbdae25ba3806f4256745e98617825 /include/net
parent036c2e27bc3a6498afb35de017d810194032d765 (diff)
[NET]: Introducing socket mark socket option.
A userspace program may wish to set the mark for each packets its send without using the netfilter MARK target. Changing the mark can be used for mark based routing without netfilter or for packet filtering. It requires CAP_NET_ADMIN capability. Signed-off-by: Laszlo Attila Toth <panther@balabit.hu> Acked-by: Patrick McHardy <kaber@trash.net> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'include/net')
-rw-r--r--include/net/route.h2
-rw-r--r--include/net/sock.h2
2 files changed, 4 insertions, 0 deletions
diff --git a/include/net/route.h b/include/net/route.h
index 4eabf008413..fcc6d5b3586 100644
--- a/include/net/route.h
+++ b/include/net/route.h
@@ -27,6 +27,7 @@
27#include <net/dst.h> 27#include <net/dst.h>
28#include <net/inetpeer.h> 28#include <net/inetpeer.h>
29#include <net/flow.h> 29#include <net/flow.h>
30#include <net/sock.h>
30#include <linux/in_route.h> 31#include <linux/in_route.h>
31#include <linux/rtnetlink.h> 32#include <linux/rtnetlink.h>
32#include <linux/route.h> 33#include <linux/route.h>
@@ -149,6 +150,7 @@ static inline int ip_route_connect(struct rtable **rp, __be32 dst,
149 int flags) 150 int flags)
150{ 151{
151 struct flowi fl = { .oif = oif, 152 struct flowi fl = { .oif = oif,
153 .mark = sk->sk_mark,
152 .nl_u = { .ip4_u = { .daddr = dst, 154 .nl_u = { .ip4_u = { .daddr = dst,
153 .saddr = src, 155 .saddr = src,
154 .tos = tos } }, 156 .tos = tos } },
diff --git a/include/net/sock.h b/include/net/sock.h
index 902324488d0..e3fb4c047f4 100644
--- a/include/net/sock.h
+++ b/include/net/sock.h
@@ -262,6 +262,8 @@ struct sock {
262 __u32 sk_sndmsg_off; 262 __u32 sk_sndmsg_off;
263 int sk_write_pending; 263 int sk_write_pending;
264 void *sk_security; 264 void *sk_security;
265 __u32 sk_mark;
266 /* XXX 4 bytes hole on 64 bit */
265 void (*sk_state_change)(struct sock *sk); 267 void (*sk_state_change)(struct sock *sk);
266 void (*sk_data_ready)(struct sock *sk, int bytes); 268 void (*sk_data_ready)(struct sock *sk, int bytes);
267 void (*sk_write_space)(struct sock *sk); 269 void (*sk_write_space)(struct sock *sk);