diff options
-rw-r--r-- | arch/alpha/include/asm/socket.h | 1 | ||||
-rw-r--r-- | arch/arm/include/asm/socket.h | 2 | ||||
-rw-r--r-- | arch/avr32/include/asm/socket.h | 2 | ||||
-rw-r--r-- | arch/cris/include/asm/socket.h | 2 | ||||
-rw-r--r-- | arch/frv/include/asm/socket.h | 2 | ||||
-rw-r--r-- | arch/h8300/include/asm/socket.h | 2 | ||||
-rw-r--r-- | arch/ia64/include/asm/socket.h | 2 | ||||
-rw-r--r-- | arch/m32r/include/asm/socket.h | 2 | ||||
-rw-r--r-- | arch/m68k/include/asm/socket.h | 2 | ||||
-rw-r--r-- | arch/microblaze/include/asm/socket.h | 2 | ||||
-rw-r--r-- | arch/mips/include/asm/socket.h | 1 | ||||
-rw-r--r-- | arch/mn10300/include/asm/socket.h | 2 | ||||
-rw-r--r-- | arch/parisc/include/asm/socket.h | 1 | ||||
-rw-r--r-- | arch/powerpc/include/asm/socket.h | 2 | ||||
-rw-r--r-- | arch/s390/include/asm/socket.h | 2 | ||||
-rw-r--r-- | arch/sparc/include/asm/socket.h | 2 | ||||
-rw-r--r-- | arch/x86/include/asm/socket.h | 2 | ||||
-rw-r--r-- | arch/xtensa/include/asm/socket.h | 2 | ||||
-rw-r--r-- | include/asm-generic/socket.h | 2 | ||||
-rw-r--r-- | net/core/sock.c | 5 |
20 files changed, 40 insertions, 0 deletions
diff --git a/arch/alpha/include/asm/socket.h b/arch/alpha/include/asm/socket.h index 3641ec1452f..2f8b4d37774 100644 --- a/arch/alpha/include/asm/socket.h +++ b/arch/alpha/include/asm/socket.h | |||
@@ -32,6 +32,7 @@ | |||
32 | #define SO_RCVTIMEO 0x1012 | 32 | #define SO_RCVTIMEO 0x1012 |
33 | #define SO_SNDTIMEO 0x1013 | 33 | #define SO_SNDTIMEO 0x1013 |
34 | #define SO_ACCEPTCONN 0x1014 | 34 | #define SO_ACCEPTCONN 0x1014 |
35 | #define SO_PROTOCOL 0x1028 | ||
35 | 36 | ||
36 | /* linux-specific, might as well be the same as on i386 */ | 37 | /* linux-specific, might as well be the same as on i386 */ |
37 | #define SO_NO_CHECK 11 | 38 | #define SO_NO_CHECK 11 |
diff --git a/arch/arm/include/asm/socket.h b/arch/arm/include/asm/socket.h index 537de4e0ef5..7f47454ffbf 100644 --- a/arch/arm/include/asm/socket.h +++ b/arch/arm/include/asm/socket.h | |||
@@ -57,4 +57,6 @@ | |||
57 | #define SO_TIMESTAMPING 37 | 57 | #define SO_TIMESTAMPING 37 |
58 | #define SCM_TIMESTAMPING SO_TIMESTAMPING | 58 | #define SCM_TIMESTAMPING SO_TIMESTAMPING |
59 | 59 | ||
60 | #define SO_PROTOCOL 38 | ||
61 | |||
60 | #endif /* _ASM_SOCKET_H */ | 62 | #endif /* _ASM_SOCKET_H */ |
diff --git a/arch/avr32/include/asm/socket.h b/arch/avr32/include/asm/socket.h index 04c86061970..6af2866a4f0 100644 --- a/arch/avr32/include/asm/socket.h +++ b/arch/avr32/include/asm/socket.h | |||
@@ -57,4 +57,6 @@ | |||
57 | #define SO_TIMESTAMPING 37 | 57 | #define SO_TIMESTAMPING 37 |
58 | #define SCM_TIMESTAMPING SO_TIMESTAMPING | 58 | #define SCM_TIMESTAMPING SO_TIMESTAMPING |
59 | 59 | ||
60 | #define SO_PROTOCOL 38 | ||
61 | |||
60 | #endif /* __ASM_AVR32_SOCKET_H */ | 62 | #endif /* __ASM_AVR32_SOCKET_H */ |
diff --git a/arch/cris/include/asm/socket.h b/arch/cris/include/asm/socket.h index d5cf7400540..f3859fb0990 100644 --- a/arch/cris/include/asm/socket.h +++ b/arch/cris/include/asm/socket.h | |||
@@ -59,6 +59,8 @@ | |||
59 | #define SO_TIMESTAMPING 37 | 59 | #define SO_TIMESTAMPING 37 |
60 | #define SCM_TIMESTAMPING SO_TIMESTAMPING | 60 | #define SCM_TIMESTAMPING SO_TIMESTAMPING |
61 | 61 | ||
62 | #define SO_PROTOCOL 38 | ||
63 | |||
62 | #endif /* _ASM_SOCKET_H */ | 64 | #endif /* _ASM_SOCKET_H */ |
63 | 65 | ||
64 | 66 | ||
diff --git a/arch/frv/include/asm/socket.h b/arch/frv/include/asm/socket.h index 57c3d4054e8..8dab3486ffa 100644 --- a/arch/frv/include/asm/socket.h +++ b/arch/frv/include/asm/socket.h | |||
@@ -57,5 +57,7 @@ | |||
57 | #define SO_TIMESTAMPING 37 | 57 | #define SO_TIMESTAMPING 37 |
58 | #define SCM_TIMESTAMPING SO_TIMESTAMPING | 58 | #define SCM_TIMESTAMPING SO_TIMESTAMPING |
59 | 59 | ||
60 | #define SO_PROTOCOL 38 | ||
61 | |||
60 | #endif /* _ASM_SOCKET_H */ | 62 | #endif /* _ASM_SOCKET_H */ |
61 | 63 | ||
diff --git a/arch/h8300/include/asm/socket.h b/arch/h8300/include/asm/socket.h index 602518a70a1..ba770d09cd6 100644 --- a/arch/h8300/include/asm/socket.h +++ b/arch/h8300/include/asm/socket.h | |||
@@ -57,4 +57,6 @@ | |||
57 | #define SO_TIMESTAMPING 37 | 57 | #define SO_TIMESTAMPING 37 |
58 | #define SCM_TIMESTAMPING SO_TIMESTAMPING | 58 | #define SCM_TIMESTAMPING SO_TIMESTAMPING |
59 | 59 | ||
60 | #define SO_PROTOCOL 38 | ||
61 | |||
60 | #endif /* _ASM_SOCKET_H */ | 62 | #endif /* _ASM_SOCKET_H */ |
diff --git a/arch/ia64/include/asm/socket.h b/arch/ia64/include/asm/socket.h index 745421225ec..091cd9d47d0 100644 --- a/arch/ia64/include/asm/socket.h +++ b/arch/ia64/include/asm/socket.h | |||
@@ -66,4 +66,6 @@ | |||
66 | #define SO_TIMESTAMPING 37 | 66 | #define SO_TIMESTAMPING 37 |
67 | #define SCM_TIMESTAMPING SO_TIMESTAMPING | 67 | #define SCM_TIMESTAMPING SO_TIMESTAMPING |
68 | 68 | ||
69 | #define SO_PROTOCOL 38 | ||
70 | |||
69 | #endif /* _ASM_IA64_SOCKET_H */ | 71 | #endif /* _ASM_IA64_SOCKET_H */ |
diff --git a/arch/m32r/include/asm/socket.h b/arch/m32r/include/asm/socket.h index be7ed589af5..d36f5928fb7 100644 --- a/arch/m32r/include/asm/socket.h +++ b/arch/m32r/include/asm/socket.h | |||
@@ -57,4 +57,6 @@ | |||
57 | #define SO_TIMESTAMPING 37 | 57 | #define SO_TIMESTAMPING 37 |
58 | #define SCM_TIMESTAMPING SO_TIMESTAMPING | 58 | #define SCM_TIMESTAMPING SO_TIMESTAMPING |
59 | 59 | ||
60 | #define SO_PROTOCOL 38 | ||
61 | |||
60 | #endif /* _ASM_M32R_SOCKET_H */ | 62 | #endif /* _ASM_M32R_SOCKET_H */ |
diff --git a/arch/m68k/include/asm/socket.h b/arch/m68k/include/asm/socket.h index ca87f938b03..060cb7ed024 100644 --- a/arch/m68k/include/asm/socket.h +++ b/arch/m68k/include/asm/socket.h | |||
@@ -57,4 +57,6 @@ | |||
57 | #define SO_TIMESTAMPING 37 | 57 | #define SO_TIMESTAMPING 37 |
58 | #define SCM_TIMESTAMPING SO_TIMESTAMPING | 58 | #define SCM_TIMESTAMPING SO_TIMESTAMPING |
59 | 59 | ||
60 | #define SO_PROTOCOL 38 | ||
61 | |||
60 | #endif /* _ASM_SOCKET_H */ | 62 | #endif /* _ASM_SOCKET_H */ |
diff --git a/arch/microblaze/include/asm/socket.h b/arch/microblaze/include/asm/socket.h index 82593686031..96bf8bfa935 100644 --- a/arch/microblaze/include/asm/socket.h +++ b/arch/microblaze/include/asm/socket.h | |||
@@ -66,4 +66,6 @@ | |||
66 | #define SO_TIMESTAMPING 37 | 66 | #define SO_TIMESTAMPING 37 |
67 | #define SCM_TIMESTAMPING SO_TIMESTAMPING | 67 | #define SCM_TIMESTAMPING SO_TIMESTAMPING |
68 | 68 | ||
69 | #define SO_PROTOCOL 38 | ||
70 | |||
69 | #endif /* _ASM_MICROBLAZE_SOCKET_H */ | 71 | #endif /* _ASM_MICROBLAZE_SOCKET_H */ |
diff --git a/arch/mips/include/asm/socket.h b/arch/mips/include/asm/socket.h index 2abca178016..289ce5f5f2a 100644 --- a/arch/mips/include/asm/socket.h +++ b/arch/mips/include/asm/socket.h | |||
@@ -42,6 +42,7 @@ To add: #define SO_REUSEPORT 0x0200 /* Allow local address and port reuse. */ | |||
42 | #define SO_SNDTIMEO 0x1005 /* send timeout */ | 42 | #define SO_SNDTIMEO 0x1005 /* send timeout */ |
43 | #define SO_RCVTIMEO 0x1006 /* receive timeout */ | 43 | #define SO_RCVTIMEO 0x1006 /* receive timeout */ |
44 | #define SO_ACCEPTCONN 0x1009 | 44 | #define SO_ACCEPTCONN 0x1009 |
45 | #define SO_PROTOCOL 0x1028 /* protocol type */ | ||
45 | 46 | ||
46 | /* linux-specific, might as well be the same as on i386 */ | 47 | /* linux-specific, might as well be the same as on i386 */ |
47 | #define SO_NO_CHECK 11 | 48 | #define SO_NO_CHECK 11 |
diff --git a/arch/mn10300/include/asm/socket.h b/arch/mn10300/include/asm/socket.h index fb5daf438ec..19d7cf709b7 100644 --- a/arch/mn10300/include/asm/socket.h +++ b/arch/mn10300/include/asm/socket.h | |||
@@ -57,4 +57,6 @@ | |||
57 | #define SO_TIMESTAMPING 37 | 57 | #define SO_TIMESTAMPING 37 |
58 | #define SCM_TIMESTAMPING SO_TIMESTAMPING | 58 | #define SCM_TIMESTAMPING SO_TIMESTAMPING |
59 | 59 | ||
60 | #define SO_PROTOCOL 38 | ||
61 | |||
60 | #endif /* _ASM_SOCKET_H */ | 62 | #endif /* _ASM_SOCKET_H */ |
diff --git a/arch/parisc/include/asm/socket.h b/arch/parisc/include/asm/socket.h index 885472bf7b7..a658b09df62 100644 --- a/arch/parisc/include/asm/socket.h +++ b/arch/parisc/include/asm/socket.h | |||
@@ -24,6 +24,7 @@ | |||
24 | #define SO_RCVTIMEO 0x1006 | 24 | #define SO_RCVTIMEO 0x1006 |
25 | #define SO_ERROR 0x1007 | 25 | #define SO_ERROR 0x1007 |
26 | #define SO_TYPE 0x1008 | 26 | #define SO_TYPE 0x1008 |
27 | #define SO_PROTOCOL 0x1028 | ||
27 | #define SO_PEERNAME 0x2000 | 28 | #define SO_PEERNAME 0x2000 |
28 | 29 | ||
29 | #define SO_NO_CHECK 0x400b | 30 | #define SO_NO_CHECK 0x400b |
diff --git a/arch/powerpc/include/asm/socket.h b/arch/powerpc/include/asm/socket.h index 1e5cfad0e3f..609049d7117 100644 --- a/arch/powerpc/include/asm/socket.h +++ b/arch/powerpc/include/asm/socket.h | |||
@@ -64,4 +64,6 @@ | |||
64 | #define SO_TIMESTAMPING 37 | 64 | #define SO_TIMESTAMPING 37 |
65 | #define SCM_TIMESTAMPING SO_TIMESTAMPING | 65 | #define SCM_TIMESTAMPING SO_TIMESTAMPING |
66 | 66 | ||
67 | #define SO_PROTOCOL 38 | ||
68 | |||
67 | #endif /* _ASM_POWERPC_SOCKET_H */ | 69 | #endif /* _ASM_POWERPC_SOCKET_H */ |
diff --git a/arch/s390/include/asm/socket.h b/arch/s390/include/asm/socket.h index 02330c50241..65baa9a83ab 100644 --- a/arch/s390/include/asm/socket.h +++ b/arch/s390/include/asm/socket.h | |||
@@ -65,4 +65,6 @@ | |||
65 | #define SO_TIMESTAMPING 37 | 65 | #define SO_TIMESTAMPING 37 |
66 | #define SCM_TIMESTAMPING SO_TIMESTAMPING | 66 | #define SCM_TIMESTAMPING SO_TIMESTAMPING |
67 | 67 | ||
68 | #define SO_PROTOCOL 38 | ||
69 | |||
68 | #endif /* _ASM_SOCKET_H */ | 70 | #endif /* _ASM_SOCKET_H */ |
diff --git a/arch/sparc/include/asm/socket.h b/arch/sparc/include/asm/socket.h index 982a12f959f..9cbbfafd053 100644 --- a/arch/sparc/include/asm/socket.h +++ b/arch/sparc/include/asm/socket.h | |||
@@ -29,6 +29,8 @@ | |||
29 | #define SO_RCVBUFFORCE 0x100b | 29 | #define SO_RCVBUFFORCE 0x100b |
30 | #define SO_ERROR 0x1007 | 30 | #define SO_ERROR 0x1007 |
31 | #define SO_TYPE 0x1008 | 31 | #define SO_TYPE 0x1008 |
32 | #define SO_PROTOCOL 0x1028 | ||
33 | |||
32 | 34 | ||
33 | /* Linux specific, keep the same. */ | 35 | /* Linux specific, keep the same. */ |
34 | #define SO_NO_CHECK 0x000b | 36 | #define SO_NO_CHECK 0x000b |
diff --git a/arch/x86/include/asm/socket.h b/arch/x86/include/asm/socket.h index ca8bf2cd0ba..1077d2535a3 100644 --- a/arch/x86/include/asm/socket.h +++ b/arch/x86/include/asm/socket.h | |||
@@ -57,4 +57,6 @@ | |||
57 | #define SO_TIMESTAMPING 37 | 57 | #define SO_TIMESTAMPING 37 |
58 | #define SCM_TIMESTAMPING SO_TIMESTAMPING | 58 | #define SCM_TIMESTAMPING SO_TIMESTAMPING |
59 | 59 | ||
60 | #define SO_PROTOCOL 38 | ||
61 | |||
60 | #endif /* _ASM_X86_SOCKET_H */ | 62 | #endif /* _ASM_X86_SOCKET_H */ |
diff --git a/arch/xtensa/include/asm/socket.h b/arch/xtensa/include/asm/socket.h index dd1a7a4a1ce..e47f172142f 100644 --- a/arch/xtensa/include/asm/socket.h +++ b/arch/xtensa/include/asm/socket.h | |||
@@ -68,4 +68,6 @@ | |||
68 | #define SO_TIMESTAMPING 37 | 68 | #define SO_TIMESTAMPING 37 |
69 | #define SCM_TIMESTAMPING SO_TIMESTAMPING | 69 | #define SCM_TIMESTAMPING SO_TIMESTAMPING |
70 | 70 | ||
71 | #define SO_PROTOCOL 38 | ||
72 | |||
71 | #endif /* _XTENSA_SOCKET_H */ | 73 | #endif /* _XTENSA_SOCKET_H */ |
diff --git a/include/asm-generic/socket.h b/include/asm-generic/socket.h index 5d79e409241..7e24d186616 100644 --- a/include/asm-generic/socket.h +++ b/include/asm-generic/socket.h | |||
@@ -60,4 +60,6 @@ | |||
60 | #define SO_TIMESTAMPING 37 | 60 | #define SO_TIMESTAMPING 37 |
61 | #define SCM_TIMESTAMPING SO_TIMESTAMPING | 61 | #define SCM_TIMESTAMPING SO_TIMESTAMPING |
62 | 62 | ||
63 | #define SO_PROTOCOL 38 | ||
64 | |||
63 | #endif /* __ASM_GENERIC_SOCKET_H */ | 65 | #endif /* __ASM_GENERIC_SOCKET_H */ |
diff --git a/net/core/sock.c b/net/core/sock.c index a324a80c163..ebce661234a 100644 --- a/net/core/sock.c +++ b/net/core/sock.c | |||
@@ -482,6 +482,7 @@ int sock_setsockopt(struct socket *sock, int level, int optname, | |||
482 | sk->sk_reuse = valbool; | 482 | sk->sk_reuse = valbool; |
483 | break; | 483 | break; |
484 | case SO_TYPE: | 484 | case SO_TYPE: |
485 | case SO_PROTOCOL: | ||
485 | case SO_ERROR: | 486 | case SO_ERROR: |
486 | ret = -ENOPROTOOPT; | 487 | ret = -ENOPROTOOPT; |
487 | break; | 488 | break; |
@@ -764,6 +765,10 @@ int sock_getsockopt(struct socket *sock, int level, int optname, | |||
764 | v.val = sk->sk_type; | 765 | v.val = sk->sk_type; |
765 | break; | 766 | break; |
766 | 767 | ||
768 | case SO_PROTOCOL: | ||
769 | v.val = sk->sk_protocol; | ||
770 | break; | ||
771 | |||
767 | case SO_ERROR: | 772 | case SO_ERROR: |
768 | v.val = -sock_error(sk); | 773 | v.val = -sock_error(sk); |
769 | if (v.val == 0) | 774 | if (v.val == 0) |