--- zzzz-none-000/linux-2.6.39.4/net/core/sock.c 2011-08-03 19:43:28.000000000 +0000 +++ puma6-atom-6490-729/linux-2.6.39.4/net/core/sock.c 2021-11-10 13:38:18.000000000 +0000 @@ -732,6 +732,14 @@ sk->sk_mark = val; break; + case SO_MARKTASK: /* AVM calle, for PUMA */ + if (!capable(CAP_NET_ADMIN)) + ret = -EPERM; + else { + current->netmark = val; + } + break; + /* We implement the SO_SNDLOWAT etc to not be settable (1003.1g 5.3) */ case SO_RXQ_OVFL: @@ -961,6 +969,10 @@ v.val = !!sock_flag(sk, SOCK_RXQ_OVFL); break; + case SO_MARKTASK: /* AVM calle, for PUMA */ + v.val = current->netmark; + break; + default: return -ENOPROTOOPT; } @@ -1135,6 +1147,7 @@ sk->sk_prot = sk->sk_prot_creator = prot; sock_lock_init(sk); sock_net_set(sk, get_net(net)); + sk->sk_mark = current->netmark; /* AVM calle */ atomic_set(&sk->sk_wmem_alloc, 1); sock_update_classid(sk);