Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 81871
b: refs/heads/master
c: 4a19ec5
h: refs/heads/master
i:
  81869: b49ff8c
  81867: 4be0f41
  81863: 142cc70
  81855: 30b0743
v: v3
  • Loading branch information
Laszlo Attila Toth authored and David S. Miller committed Feb 1, 2008
1 parent e942a50 commit 08c61fd
Show file tree
Hide file tree
Showing 28 changed files with 66 additions and 1 deletion.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 036c2e27bc3a6498afb35de017d810194032d765
refs/heads/master: 4a19ec5800fc3bb64e2d87c4d9fdd9e636086fe0
2 changes: 2 additions & 0 deletions trunk/include/asm-alpha/socket.h
Original file line number Diff line number Diff line change
Expand Up @@ -60,4 +60,6 @@
#define SO_SECURITY_ENCRYPTION_TRANSPORT 20
#define SO_SECURITY_ENCRYPTION_NETWORK 21

#define SO_MARK 36

#endif /* _ASM_SOCKET_H */
2 changes: 2 additions & 0 deletions trunk/include/asm-arm/socket.h
Original file line number Diff line number Diff line change
Expand Up @@ -52,4 +52,6 @@
#define SO_TIMESTAMPNS 35
#define SCM_TIMESTAMPNS SO_TIMESTAMPNS

#define SO_MARK 36

#endif /* _ASM_SOCKET_H */
2 changes: 2 additions & 0 deletions trunk/include/asm-avr32/socket.h
Original file line number Diff line number Diff line change
Expand Up @@ -52,4 +52,6 @@
#define SO_TIMESTAMPNS 35
#define SCM_TIMESTAMPNS SO_TIMESTAMPNS

#define SO_MARK 36

#endif /* __ASM_AVR32_SOCKET_H */
3 changes: 3 additions & 0 deletions trunk/include/asm-blackfin/socket.h
Original file line number Diff line number Diff line change
Expand Up @@ -50,4 +50,7 @@
#define SO_PASSSEC 34
#define SO_TIMESTAMPNS 35
#define SCM_TIMESTAMPNS SO_TIMESTAMPNS

#define SO_MARK 36

#endif /* _ASM_SOCKET_H */
2 changes: 2 additions & 0 deletions trunk/include/asm-cris/socket.h
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,8 @@
#define SO_TIMESTAMPNS 35
#define SCM_TIMESTAMPNS SO_TIMESTAMPNS

#define SO_MARK 36

#endif /* _ASM_SOCKET_H */


2 changes: 2 additions & 0 deletions trunk/include/asm-frv/socket.h
Original file line number Diff line number Diff line change
Expand Up @@ -52,5 +52,7 @@
#define SO_TIMESTAMPNS 35
#define SCM_TIMESTAMPNS SO_TIMESTAMPNS

#define SO_MARK 36

#endif /* _ASM_SOCKET_H */

2 changes: 2 additions & 0 deletions trunk/include/asm-h8300/socket.h
Original file line number Diff line number Diff line change
Expand Up @@ -52,4 +52,6 @@
#define SO_TIMESTAMPNS 35
#define SCM_TIMESTAMPNS SO_TIMESTAMPNS

#define SO_MARK 36

#endif /* _ASM_SOCKET_H */
2 changes: 2 additions & 0 deletions trunk/include/asm-ia64/socket.h
Original file line number Diff line number Diff line change
Expand Up @@ -61,4 +61,6 @@
#define SO_TIMESTAMPNS 35
#define SCM_TIMESTAMPNS SO_TIMESTAMPNS

#define SO_MARK 36

#endif /* _ASM_IA64_SOCKET_H */
2 changes: 2 additions & 0 deletions trunk/include/asm-m32r/socket.h
Original file line number Diff line number Diff line change
Expand Up @@ -52,4 +52,6 @@
#define SO_TIMESTAMPNS 35
#define SCM_TIMESTAMPNS SO_TIMESTAMPNS

#define SO_MARK 36

#endif /* _ASM_M32R_SOCKET_H */
2 changes: 2 additions & 0 deletions trunk/include/asm-m68k/socket.h
Original file line number Diff line number Diff line change
Expand Up @@ -52,4 +52,6 @@
#define SO_TIMESTAMPNS 35
#define SCM_TIMESTAMPNS SO_TIMESTAMPNS

#define SO_MARK 36

#endif /* _ASM_SOCKET_H */
2 changes: 2 additions & 0 deletions trunk/include/asm-mips/socket.h
Original file line number Diff line number Diff line change
Expand Up @@ -73,6 +73,8 @@ To add: #define SO_REUSEPORT 0x0200 /* Allow local address and port reuse. */
#define SO_TIMESTAMPNS 35
#define SCM_TIMESTAMPNS SO_TIMESTAMPNS

#define SO_MARK 36

#ifdef __KERNEL__

/** sock_type - Socket types
Expand Down
2 changes: 2 additions & 0 deletions trunk/include/asm-parisc/socket.h
Original file line number Diff line number Diff line change
Expand Up @@ -52,4 +52,6 @@
#define SO_PEERSEC 0x401d
#define SO_PASSSEC 0x401e

#define SO_MARK 0x401f

#endif /* _ASM_SOCKET_H */
2 changes: 2 additions & 0 deletions trunk/include/asm-powerpc/socket.h
Original file line number Diff line number Diff line change
Expand Up @@ -59,4 +59,6 @@
#define SO_TIMESTAMPNS 35
#define SCM_TIMESTAMPNS SO_TIMESTAMPNS

#define SO_MARK 36

#endif /* _ASM_POWERPC_SOCKET_H */
2 changes: 2 additions & 0 deletions trunk/include/asm-s390/socket.h
Original file line number Diff line number Diff line change
Expand Up @@ -60,4 +60,6 @@
#define SO_TIMESTAMPNS 35
#define SCM_TIMESTAMPNS SO_TIMESTAMPNS

#define SO_MARK 36

#endif /* _ASM_SOCKET_H */
2 changes: 2 additions & 0 deletions trunk/include/asm-sh/socket.h
Original file line number Diff line number Diff line change
Expand Up @@ -52,4 +52,6 @@
#define SO_TIMESTAMPNS 35
#define SCM_TIMESTAMPNS SO_TIMESTAMPNS

#define SO_MARK 36

#endif /* __ASM_SH_SOCKET_H */
2 changes: 2 additions & 0 deletions trunk/include/asm-sparc/socket.h
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,8 @@
#define SO_TIMESTAMPNS 0x0021
#define SCM_TIMESTAMPNS SO_TIMESTAMPNS

#define SO_MARK 0x0022

/* Security levels - as per NRL IPv6 - don't actually do anything */
#define SO_SECURITY_AUTHENTICATION 0x5001
#define SO_SECURITY_ENCRYPTION_TRANSPORT 0x5002
Expand Down
1 change: 1 addition & 0 deletions trunk/include/asm-sparc64/socket.h
Original file line number Diff line number Diff line change
Expand Up @@ -57,4 +57,5 @@
#define SO_SECURITY_ENCRYPTION_TRANSPORT 0x5002
#define SO_SECURITY_ENCRYPTION_NETWORK 0x5004

#define SO_MARK 0x0022
#endif /* _ASM_SOCKET_H */
2 changes: 2 additions & 0 deletions trunk/include/asm-v850/socket.h
Original file line number Diff line number Diff line change
Expand Up @@ -52,4 +52,6 @@
#define SO_TIMESTAMPNS 35
#define SCM_TIMESTAMPNS SO_TIMESTAMPNS

#define SO_MARK 36

#endif /* __V850_SOCKET_H__ */
2 changes: 2 additions & 0 deletions trunk/include/asm-x86/socket.h
Original file line number Diff line number Diff line change
Expand Up @@ -52,4 +52,6 @@
#define SO_TIMESTAMPNS 35
#define SCM_TIMESTAMPNS SO_TIMESTAMPNS

#define SO_MARK 36

#endif /* _ASM_SOCKET_H */
2 changes: 2 additions & 0 deletions trunk/include/asm-xtensa/socket.h
Original file line number Diff line number Diff line change
Expand Up @@ -63,4 +63,6 @@
#define SO_TIMESTAMPNS 35
#define SCM_TIMESTAMPNS SO_TIMESTAMPNS

#define SO_MARK 36

#endif /* _XTENSA_SOCKET_H */
2 changes: 2 additions & 0 deletions trunk/include/net/route.h
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@
#include <net/dst.h>
#include <net/inetpeer.h>
#include <net/flow.h>
#include <net/sock.h>
#include <linux/in_route.h>
#include <linux/rtnetlink.h>
#include <linux/route.h>
Expand Down Expand Up @@ -149,6 +150,7 @@ static inline int ip_route_connect(struct rtable **rp, __be32 dst,
int flags)
{
struct flowi fl = { .oif = oif,
.mark = sk->sk_mark,
.nl_u = { .ip4_u = { .daddr = dst,
.saddr = src,
.tos = tos } },
Expand Down
2 changes: 2 additions & 0 deletions trunk/include/net/sock.h
Original file line number Diff line number Diff line change
Expand Up @@ -262,6 +262,8 @@ struct sock {
__u32 sk_sndmsg_off;
int sk_write_pending;
void *sk_security;
__u32 sk_mark;
/* XXX 4 bytes hole on 64 bit */
void (*sk_state_change)(struct sock *sk);
void (*sk_data_ready)(struct sock *sk, int bytes);
void (*sk_write_space)(struct sock *sk);
Expand Down
11 changes: 11 additions & 0 deletions trunk/net/core/sock.c
Original file line number Diff line number Diff line change
Expand Up @@ -667,6 +667,13 @@ int sock_setsockopt(struct socket *sock, int level, int optname,
else
clear_bit(SOCK_PASSSEC, &sock->flags);
break;
case SO_MARK:
if (!capable(CAP_NET_ADMIN))
ret = -EPERM;
else {
sk->sk_mark = val;
}
break;

/* We implement the SO_SNDLOWAT etc to
not be settable (1003.1g 5.3) */
Expand Down Expand Up @@ -836,6 +843,10 @@ int sock_getsockopt(struct socket *sock, int level, int optname,
case SO_PEERSEC:
return security_socket_getpeersec_stream(sock, optval, optlen, len);

case SO_MARK:
v.val = sk->sk_mark;
break;

default:
return -ENOPROTOOPT;
}
Expand Down
3 changes: 3 additions & 0 deletions trunk/net/ipv4/ip_output.c
Original file line number Diff line number Diff line change
Expand Up @@ -168,6 +168,7 @@ int ip_build_and_send_pkt(struct sk_buff *skb, struct sock *sk,
}

skb->priority = sk->sk_priority;
skb->mark = sk->sk_mark;

/* Send it out. */
return ip_local_out(skb);
Expand Down Expand Up @@ -385,6 +386,7 @@ int ip_queue_xmit(struct sk_buff *skb, int ipfragok)
(skb_shinfo(skb)->gso_segs ?: 1) - 1);

skb->priority = sk->sk_priority;
skb->mark = sk->sk_mark;

return ip_local_out(skb);

Expand Down Expand Up @@ -1286,6 +1288,7 @@ int ip_push_pending_frames(struct sock *sk)
iph->daddr = rt->rt_dst;

skb->priority = sk->sk_priority;
skb->mark = sk->sk_mark;
skb->dst = dst_clone(&rt->u.dst);

if (iph->protocol == IPPROTO_ICMP)
Expand Down
2 changes: 2 additions & 0 deletions trunk/net/ipv4/raw.c
Original file line number Diff line number Diff line change
Expand Up @@ -352,6 +352,7 @@ static int raw_send_hdrinc(struct sock *sk, void *from, size_t length,
skb_reserve(skb, hh_len);

skb->priority = sk->sk_priority;
skb->mark = sk->sk_mark;
skb->dst = dst_clone(&rt->u.dst);

skb_reset_network_header(skb);
Expand Down Expand Up @@ -544,6 +545,7 @@ static int raw_sendmsg(struct kiocb *iocb, struct sock *sk, struct msghdr *msg,

{
struct flowi fl = { .oif = ipc.oif,
.mark = sk->sk_mark,
.nl_u = { .ip4_u =
{ .daddr = daddr,
.saddr = saddr,
Expand Down
2 changes: 2 additions & 0 deletions trunk/net/ipv6/ip6_output.c
Original file line number Diff line number Diff line change
Expand Up @@ -257,6 +257,7 @@ int ip6_xmit(struct sock *sk, struct sk_buff *skb, struct flowi *fl,
ipv6_addr_copy(&hdr->daddr, first_hop);

skb->priority = sk->sk_priority;
skb->mark = sk->sk_mark;

mtu = dst_mtu(dst);
if ((skb->len <= mtu) || ipfragok || skb_is_gso(skb)) {
Expand Down Expand Up @@ -1439,6 +1440,7 @@ int ip6_push_pending_frames(struct sock *sk)
ipv6_addr_copy(&hdr->daddr, final_dst);

skb->priority = sk->sk_priority;
skb->mark = sk->sk_mark;

skb->dst = dst_clone(&rt->u.dst);
IP6_INC_STATS(rt->rt6i_idev, IPSTATS_MIB_OUTREQUESTS);
Expand Down
3 changes: 3 additions & 0 deletions trunk/net/ipv6/raw.c
Original file line number Diff line number Diff line change
Expand Up @@ -641,6 +641,7 @@ static int rawv6_send_hdrinc(struct sock *sk, void *from, int length,
skb_reserve(skb, hh_len);

skb->priority = sk->sk_priority;
skb->mark = sk->sk_mark;
skb->dst = dst_clone(&rt->u.dst);

skb_put(skb, length);
Expand Down Expand Up @@ -767,6 +768,8 @@ static int rawv6_sendmsg(struct kiocb *iocb, struct sock *sk,
*/
memset(&fl, 0, sizeof(fl));

fl.mark = sk->sk_mark;

if (sin6) {
if (addr_len < SIN6_LEN_RFC2133)
return -EINVAL;
Expand Down

0 comments on commit 08c61fd

Please sign in to comment.