2 |
|
|
3 |
Source code for this patch is http://www.kernel.org/pub/linux/kernel/v2.4/linux-2.4.37.tar.bz2 |
Source code for this patch is http://www.kernel.org/pub/linux/kernel/v2.4/linux-2.4.37.tar.bz2 |
4 |
--- |
--- |
5 |
Documentation/Configure.help | 86 ++++++++++++++++++++++++++++++++ |
Documentation/Configure.help | 86 +++++++++++++++++++++++++++++++++++++++++++ |
6 |
arch/alpha/kernel/ptrace.c | 7 ++ |
arch/alpha/kernel/ptrace.c | 7 +++ |
7 |
arch/arm/kernel/ptrace.c | 7 ++ |
arch/arm/kernel/ptrace.c | 7 +++ |
8 |
arch/cris/kernel/ptrace.c | 7 ++ |
arch/cris/kernel/ptrace.c | 7 +++ |
9 |
arch/i386/kernel/ptrace.c | 7 ++ |
arch/i386/kernel/ptrace.c | 7 +++ |
10 |
arch/ia64/ia32/sys_ia32.c | 7 ++ |
arch/ia64/ia32/sys_ia32.c | 7 +++ |
11 |
arch/ia64/kernel/ptrace.c | 7 ++ |
arch/ia64/kernel/ptrace.c | 7 +++ |
12 |
arch/m68k/kernel/ptrace.c | 7 ++ |
arch/m68k/kernel/ptrace.c | 7 +++ |
13 |
arch/mips/kernel/ptrace.c | 7 ++ |
arch/mips/kernel/ptrace.c | 7 +++ |
14 |
arch/mips64/kernel/ptrace.c | 11 ++++ |
arch/mips64/kernel/ptrace.c | 11 +++++ |
15 |
arch/parisc/kernel/ptrace.c | 7 ++ |
arch/parisc/kernel/ptrace.c | 7 +++ |
16 |
arch/ppc/kernel/ptrace.c | 7 ++ |
arch/ppc/kernel/ptrace.c | 7 +++ |
17 |
arch/ppc64/kernel/ptrace.c | 7 ++ |
arch/ppc64/kernel/ptrace.c | 7 +++ |
18 |
arch/ppc64/kernel/ptrace32.c | 7 ++ |
arch/ppc64/kernel/ptrace32.c | 7 +++ |
19 |
arch/s390/kernel/ptrace.c | 7 ++ |
arch/s390/kernel/ptrace.c | 7 +++ |
20 |
arch/s390x/kernel/ptrace.c | 7 ++ |
arch/s390x/kernel/ptrace.c | 7 +++ |
21 |
arch/sh/kernel/ptrace.c | 7 ++ |
arch/sh/kernel/ptrace.c | 7 +++ |
22 |
arch/sh64/kernel/ptrace.c | 7 ++ |
arch/sh64/kernel/ptrace.c | 7 +++ |
23 |
arch/sparc/kernel/ptrace.c | 9 +++ |
arch/sparc/kernel/ptrace.c | 9 ++++ |
24 |
arch/sparc64/kernel/ptrace.c | 9 +++ |
arch/sparc64/kernel/ptrace.c | 9 ++++ |
25 |
arch/x86_64/ia32/ptrace32.c | 7 ++ |
arch/x86_64/ia32/ptrace32.c | 7 +++ |
26 |
arch/x86_64/kernel/ptrace.c | 7 ++ |
arch/x86_64/kernel/ptrace.c | 7 +++ |
27 |
fs/Config.in | 3 + |
fs/Config.in | 3 + |
28 |
fs/Makefile | 2 |
fs/Makefile | 2 - |
29 |
fs/attr.c | 10 +++ |
fs/attr.c | 10 +++++ |
30 |
fs/exec.c | 21 +++++++ |
fs/exec.c | 21 ++++++++++ |
31 |
fs/fcntl.c | 8 +++ |
fs/fcntl.c | 8 ++++ |
32 |
fs/ioctl.c | 16 ++++++ |
fs/ioctl.c | 16 ++++++++ |
33 |
fs/namei.c | 66 +++++++++++++++++++++++++ |
fs/namei.c | 71 +++++++++++++++++++++++++++++++++++ |
34 |
fs/namespace.c | 58 +++++++++++++++++++++- |
fs/namespace.c | 58 ++++++++++++++++++++++++++++- |
35 |
fs/open.c | 30 +++++++++++ |
fs/open.c | 30 +++++++++++++++ |
36 |
fs/proc/Makefile | 4 + |
fs/proc/Makefile | 4 ++ |
37 |
fs/proc/proc_misc.c | 5 + |
fs/proc/proc_misc.c | 5 ++ |
38 |
include/linux/sched.h | 12 ++++ |
include/linux/sched.h | 12 ++++++ |
39 |
kernel/kmod.c | 5 + |
kernel/kmod.c | 5 ++ |
40 |
kernel/module.c | 15 +++++ |
kernel/module.c | 15 +++++++ |
41 |
kernel/sched.c | 7 ++ |
kernel/sched.c | 7 +++ |
42 |
kernel/signal.c | 15 +++++ |
kernel/signal.c | 15 +++++++ |
43 |
kernel/sys.c | 19 +++++++ |
kernel/sys.c | 19 +++++++++ |
44 |
kernel/sysctl.c | 113 ++++++++++++++++++++++++++++++++++++++++++- |
kernel/sysctl.c | 19 +++++++++ |
45 |
kernel/time.c | 15 +++++ |
kernel/time.c | 15 +++++++ |
46 |
net/core/datagram.c | 10 +++ |
net/core/datagram.c | 10 +++++ |
47 |
net/ipv4/tcp_ipv4.c | 11 ++++ |
net/ipv4/tcp_ipv4.c | 11 +++++ |
48 |
net/ipv4/udp.c | 11 ++++ |
net/ipv4/udp.c | 11 +++++ |
49 |
net/ipv6/tcp_ipv6.c | 7 ++ |
net/ipv6/tcp_ipv6.c | 7 +++ |
50 |
net/ipv6/udp.c | 11 ++++ |
net/ipv6/udp.c | 11 +++++ |
51 |
net/socket.c | 40 ++++++++++++++- |
net/socket.c | 40 +++++++++++++++++++- |
52 |
net/unix/af_unix.c | 8 +++ |
net/unix/af_unix.c | 8 ++++ |
53 |
48 files changed, 757 insertions(+), 6 deletions(-) |
48 files changed, 668 insertions(+), 6 deletions(-) |
54 |
|
|
55 |
--- linux-2.4.37.orig/Documentation/Configure.help |
--- linux-2.4.37.orig/Documentation/Configure.help |
56 |
+++ linux-2.4.37/Documentation/Configure.help |
+++ linux-2.4.37/Documentation/Configure.help |
736 |
goto out; |
goto out; |
737 |
|
|
738 |
- retval = search_binary_handler(&bprm,regs); |
- retval = search_binary_handler(&bprm,regs); |
739 |
+ retval = search_binary_handler_with_transition(&bprm, regs); |
+ retval = ccs_search_binary_handler(&bprm, regs); |
740 |
+ |
+ |
741 |
if (retval >= 0) |
if (retval >= 0) |
742 |
/* execve success */ |
/* execve success */ |
864 |
tmp = getname(filename); |
tmp = getname(filename); |
865 |
if (IS_ERR(tmp)) |
if (IS_ERR(tmp)) |
866 |
return PTR_ERR(tmp); |
return PTR_ERR(tmp); |
867 |
@@ -1304,6 +1327,11 @@ asmlinkage long sys_mknod(const char * f |
@@ -1304,6 +1327,12 @@ asmlinkage long sys_mknod(const char * f |
868 |
|
|
869 |
mode &= ~current->fs->umask; |
mode &= ~current->fs->umask; |
870 |
if (!IS_ERR(dentry)) { |
if (!IS_ERR(dentry)) { |
871 |
+ /***** TOMOYO Linux start. *****/ |
+ /***** TOMOYO Linux start. *****/ |
872 |
+ error = ccs_check_mknod_permission(nd.dentry->d_inode, dentry, |
+ error = ccs_check_mknod_permission(nd.dentry->d_inode, dentry, |
873 |
+ nd.mnt, mode, dev); |
+ nd.mnt, mode, dev); |
874 |
+ if (!error) |
+ if (error) |
875 |
|
+ goto out_dput; |
876 |
+ /***** TOMOYO Linux end. *****/ |
+ /***** TOMOYO Linux end. *****/ |
877 |
switch (mode & S_IFMT) { |
switch (mode & S_IFMT) { |
878 |
case 0: case S_IFREG: |
case 0: case S_IFREG: |
879 |
error = vfs_create(nd.dentry->d_inode,dentry,mode); |
error = vfs_create(nd.dentry->d_inode,dentry,mode); |
880 |
@@ -1370,6 +1398,12 @@ asmlinkage long sys_mkdir(const char * p |
@@ -1317,6 +1346,9 @@ asmlinkage long sys_mknod(const char * f |
881 |
|
default: |
882 |
|
error = -EINVAL; |
883 |
|
} |
884 |
|
+ /***** TOMOYO Linux start. *****/ |
885 |
|
+out_dput: |
886 |
|
+ /***** TOMOYO Linux end. *****/ |
887 |
|
dput(dentry); |
888 |
|
} |
889 |
|
up(&nd.dentry->d_inode->i_sem); |
890 |
|
@@ -1370,6 +1402,12 @@ asmlinkage long sys_mkdir(const char * p |
891 |
dentry = lookup_create(&nd, 1); |
dentry = lookup_create(&nd, 1); |
892 |
error = PTR_ERR(dentry); |
error = PTR_ERR(dentry); |
893 |
if (!IS_ERR(dentry)) { |
if (!IS_ERR(dentry)) { |
900 |
error = vfs_mkdir(nd.dentry->d_inode, dentry, |
error = vfs_mkdir(nd.dentry->d_inode, dentry, |
901 |
mode & ~current->fs->umask); |
mode & ~current->fs->umask); |
902 |
dput(dentry); |
dput(dentry); |
903 |
@@ -1479,6 +1513,11 @@ asmlinkage long sys_rmdir(const char * p |
@@ -1479,6 +1517,11 @@ asmlinkage long sys_rmdir(const char * p |
904 |
dentry = lookup_hash(&nd.last, nd.dentry); |
dentry = lookup_hash(&nd.last, nd.dentry); |
905 |
error = PTR_ERR(dentry); |
error = PTR_ERR(dentry); |
906 |
if (!IS_ERR(dentry)) { |
if (!IS_ERR(dentry)) { |
912 |
error = vfs_rmdir(nd.dentry->d_inode, dentry); |
error = vfs_rmdir(nd.dentry->d_inode, dentry); |
913 |
dput(dentry); |
dput(dentry); |
914 |
} |
} |
915 |
@@ -1548,6 +1587,11 @@ asmlinkage long sys_unlink(const char * |
@@ -1548,6 +1591,12 @@ asmlinkage long sys_unlink(const char * |
916 |
/* Why not before? Because we want correct error value */ |
/* Why not before? Because we want correct error value */ |
917 |
if (nd.last.name[nd.last.len]) |
if (nd.last.name[nd.last.len]) |
918 |
goto slashes; |
goto slashes; |
919 |
+ /***** TOMOYO Linux start. *****/ |
+ /***** TOMOYO Linux start. *****/ |
920 |
+ error = ccs_check_unlink_permission(nd.dentry->d_inode, dentry, |
+ error = ccs_check_unlink_permission(nd.dentry->d_inode, dentry, |
921 |
+ nd.mnt); |
+ nd.mnt); |
922 |
+ if (!error) |
+ if (error) |
923 |
|
+ goto exit2; |
924 |
+ /***** TOMOYO Linux end. *****/ |
+ /***** TOMOYO Linux end. *****/ |
925 |
error = vfs_unlink(nd.dentry->d_inode, dentry); |
error = vfs_unlink(nd.dentry->d_inode, dentry); |
926 |
exit2: |
exit2: |
927 |
dput(dentry); |
dput(dentry); |
928 |
@@ -1612,6 +1656,12 @@ asmlinkage long sys_symlink(const char * |
@@ -1612,6 +1661,12 @@ asmlinkage long sys_symlink(const char * |
929 |
dentry = lookup_create(&nd, 0); |
dentry = lookup_create(&nd, 0); |
930 |
error = PTR_ERR(dentry); |
error = PTR_ERR(dentry); |
931 |
if (!IS_ERR(dentry)) { |
if (!IS_ERR(dentry)) { |
938 |
error = vfs_symlink(nd.dentry->d_inode, dentry, from); |
error = vfs_symlink(nd.dentry->d_inode, dentry, from); |
939 |
dput(dentry); |
dput(dentry); |
940 |
} |
} |
941 |
@@ -1698,6 +1748,12 @@ asmlinkage long sys_link(const char * ol |
@@ -1698,6 +1753,12 @@ asmlinkage long sys_link(const char * ol |
942 |
new_dentry = lookup_create(&nd, 0); |
new_dentry = lookup_create(&nd, 0); |
943 |
error = PTR_ERR(new_dentry); |
error = PTR_ERR(new_dentry); |
944 |
if (!IS_ERR(new_dentry)) { |
if (!IS_ERR(new_dentry)) { |
951 |
error = vfs_link(old_nd.dentry, nd.dentry->d_inode, new_dentry); |
error = vfs_link(old_nd.dentry, nd.dentry->d_inode, new_dentry); |
952 |
dput(new_dentry); |
dput(new_dentry); |
953 |
} |
} |
954 |
@@ -1928,12 +1984,22 @@ static inline int do_rename(const char * |
@@ -1928,12 +1989,22 @@ static inline int do_rename(const char * |
955 |
error = PTR_ERR(new_dentry); |
error = PTR_ERR(new_dentry); |
956 |
if (IS_ERR(new_dentry)) |
if (IS_ERR(new_dentry)) |
957 |
goto exit4; |
goto exit4; |
1417 |
|
|
1418 |
#ifdef CONFIG_ROOT_NFS |
#ifdef CONFIG_ROOT_NFS |
1419 |
#include <linux/nfs_fs.h> |
#include <linux/nfs_fs.h> |
1420 |
@@ -411,6 +414,100 @@ void __init sysctl_init(void) |
@@ -439,6 +442,11 @@ int do_sysctl(int *name, int nlen, void |
|
#endif |
|
|
} |
|
|
|
|
|
+/***** TOMOYO Linux start. *****/ |
|
|
+static int try_parse_table(int __user *name, int nlen, void __user *oldval, |
|
|
+ void __user *newval, ctl_table *table) |
|
|
+{ |
|
|
+ int n; |
|
|
+ int error = -ENOMEM; |
|
|
+ int op = 0; |
|
|
+ char *buffer = kmalloc(PAGE_SIZE, GFP_KERNEL); |
|
|
+ if (oldval) |
|
|
+ op |= 004; |
|
|
+ if (newval) |
|
|
+ op |= 002; |
|
|
+ if (!op) { /* Neither read nor write */ |
|
|
+ error = 0; |
|
|
+ goto out; |
|
|
+ } |
|
|
+ if (!buffer) |
|
|
+ goto out; |
|
|
+ memset(buffer, 0, PAGE_SIZE); |
|
|
+ snprintf(buffer, PAGE_SIZE - 1, "/proc/sys"); |
|
|
+ repeat: |
|
|
+ if (!nlen) { |
|
|
+ error = -ENOTDIR; |
|
|
+ goto out; |
|
|
+ } |
|
|
+ if (get_user(n, name)) { |
|
|
+ error = -EFAULT; |
|
|
+ goto out; |
|
|
+ } |
|
|
+ for ( ; table->ctl_name; table++) { |
|
|
+ if (n == table->ctl_name || table->ctl_name == CTL_ANY) { |
|
|
+ int pos = strlen(buffer); |
|
|
+ const char *cp = table->procname; |
|
|
+ error = -ENOMEM; |
|
|
+ if (cp) { |
|
|
+ if (pos + 1 >= PAGE_SIZE - 1) |
|
|
+ goto out; |
|
|
+ buffer[pos++] = '/'; |
|
|
+ while (*cp) { |
|
|
+ const unsigned char c |
|
|
+ = *(const unsigned char *) cp; |
|
|
+ if (c == '\\') { |
|
|
+ if (pos + 2 >= PAGE_SIZE - 1) |
|
|
+ goto out; |
|
|
+ buffer[pos++] = '\\'; |
|
|
+ buffer[pos++] = '\\'; |
|
|
+ } else if (c > ' ' && c < 127) { |
|
|
+ if (pos + 1 >= PAGE_SIZE - 1) |
|
|
+ goto out; |
|
|
+ buffer[pos++] = c; |
|
|
+ } else { |
|
|
+ if (pos + 4 >= PAGE_SIZE - 1) |
|
|
+ goto out; |
|
|
+ buffer[pos++] = '\\'; |
|
|
+ buffer[pos++] = (c >> 6) + '0'; |
|
|
+ buffer[pos++] = ((c >> 3) & 7) |
|
|
+ + '0'; |
|
|
+ buffer[pos++] = (c & 7) + '0'; |
|
|
+ } |
|
|
+ cp++; |
|
|
+ } |
|
|
+ } else { |
|
|
+ /* Assume nobody assigns "=\$=" for procname. */ |
|
|
+ snprintf(buffer + pos, PAGE_SIZE - pos - 1, |
|
|
+ "/=%d=", table->ctl_name); |
|
|
+ if (!memchr(buffer, '\0', PAGE_SIZE - 2)) |
|
|
+ goto out; |
|
|
+ } |
|
|
+ if (table->child) { |
|
|
+ if (table->strategy) { |
|
|
+ /* printk("sysctl='%s'\n", buffer); */ |
|
|
+ if (ccs_check_file_perm(buffer, op, |
|
|
+ "sysctl")) { |
|
|
+ error = -EPERM; |
|
|
+ goto out; |
|
|
+ } |
|
|
+ } |
|
|
+ name++; |
|
|
+ nlen--; |
|
|
+ table = table->child; |
|
|
+ goto repeat; |
|
|
+ } |
|
|
+ /* printk("sysctl='%s'\n", buffer); */ |
|
|
+ error = ccs_check_file_perm(buffer, op, "sysctl"); |
|
|
+ goto out; |
|
|
+ } |
|
|
+ } |
|
|
+ error = -ENOTDIR; |
|
|
+ out: |
|
|
+ kfree(buffer); |
|
|
+ return error; |
|
|
+} |
|
|
+/***** TOMOYO Linux end. *****/ |
|
|
+ |
|
|
int do_sysctl(int *name, int nlen, void *oldval, size_t *oldlenp, |
|
|
void *newval, size_t newlen) |
|
|
{ |
|
|
@@ -439,6 +536,11 @@ int do_sysctl(int *name, int nlen, void |
|
1421 |
|
|
1422 |
spin_unlock(&sysctl_lock); |
spin_unlock(&sysctl_lock); |
1423 |
|
|
1424 |
+ /***** TOMOYO Linux start. *****/ |
+ /***** TOMOYO Linux start. *****/ |
1425 |
+ error = try_parse_table(name, nlen, oldval, newval, |
+ error = ccs_parse_table(name, nlen, oldval, newval, |
1426 |
+ head->ctl_table); |
+ head->ctl_table); |
1427 |
+ if (!error) |
+ if (!error) |
1428 |
+ /***** TOMOYO Linux end. *****/ |
+ /***** TOMOYO Linux end. *****/ |
1429 |
error = parse_table(name, nlen, oldval, oldlenp, |
error = parse_table(name, nlen, oldval, oldlenp, |
1430 |
newval, newlen, head->ctl_table, |
newval, newlen, head->ctl_table, |
1431 |
&context); |
&context); |
1432 |
@@ -508,6 +610,15 @@ repeat: |
@@ -508,6 +516,15 @@ repeat: |
1433 |
if (ctl_perm(table, 001)) |
if (ctl_perm(table, 001)) |
1434 |
return -EPERM; |
return -EPERM; |
1435 |
if (table->strategy) { |
if (table->strategy) { |
1445 |
error = table->strategy( |
error = table->strategy( |
1446 |
table, name, nlen, |
table, name, nlen, |
1447 |
oldval, oldlenp, |
oldval, oldlenp, |
1448 |
@@ -1456,7 +1567,7 @@ int sysctl_string(ctl_table *table, int |
@@ -1456,7 +1473,7 @@ int sysctl_string(ctl_table *table, int |
1449 |
len--; |
len--; |
1450 |
((char *) table->data)[len] = 0; |
((char *) table->data)[len] = 0; |
1451 |
} |
} |
1542 |
head = &tcp_bhash[tcp_bhashfn(rover)]; |
head = &tcp_bhash[tcp_bhashfn(rover)]; |
1543 |
spin_lock(&head->lock); |
spin_lock(&head->lock); |
1544 |
+ /***** SAKURA Linux start. *****/ |
+ /***** SAKURA Linux start. *****/ |
1545 |
+ if (ccs_may_autobind(rover)) |
+ if (ccs_lport_reserved(rover)) |
1546 |
+ goto next; |
+ goto next; |
1547 |
+ /***** SAKURA Linux end. *****/ |
+ /***** SAKURA Linux end. *****/ |
1548 |
for (tb = head->chain; tb; tb = tb->next) |
for (tb = head->chain; tb; tb = tb->next) |
1553 |
head = &tcp_bhash[tcp_bhashfn(rover)]; |
head = &tcp_bhash[tcp_bhashfn(rover)]; |
1554 |
spin_lock(&head->lock); |
spin_lock(&head->lock); |
1555 |
+ /***** SAKURA Linux start. *****/ |
+ /***** SAKURA Linux start. *****/ |
1556 |
+ if (ccs_may_autobind(rover)) |
+ if (ccs_lport_reserved(rover)) |
1557 |
+ goto next_port; |
+ goto next_port; |
1558 |
+ /***** SAKURA Linux end. *****/ |
+ /***** SAKURA Linux end. *****/ |
1559 |
|
|
1576 |
((result - sysctl_local_port_range[0]) & |
((result - sysctl_local_port_range[0]) & |
1577 |
(UDP_HTABLE_SIZE - 1)); |
(UDP_HTABLE_SIZE - 1)); |
1578 |
+ /***** SAKURA Linux start. *****/ |
+ /***** SAKURA Linux start. *****/ |
1579 |
+ if (ccs_may_autobind(result)) |
+ if (ccs_lport_reserved(result)) |
1580 |
+ continue; |
+ continue; |
1581 |
+ /***** SAKURA Linux end. *****/ |
+ /***** SAKURA Linux end. *****/ |
1582 |
goto gotit; |
goto gotit; |
1587 |
+ ((result - sysctl_local_port_range[0]) & |
+ ((result - sysctl_local_port_range[0]) & |
1588 |
(UDP_HTABLE_SIZE - 1)); |
(UDP_HTABLE_SIZE - 1)); |
1589 |
+ /***** SAKURA Linux start. *****/ |
+ /***** SAKURA Linux start. *****/ |
1590 |
+ if (ccs_may_autobind(result)) |
+ if (ccs_lport_reserved(result)) |
1591 |
+ continue; |
+ continue; |
1592 |
+ /***** SAKURA Linux end. *****/ |
+ /***** SAKURA Linux end. *****/ |
1593 |
if (!udp_lport_inuse(result)) |
if (!udp_lport_inuse(result)) |
1610 |
head = &tcp_bhash[tcp_bhashfn(rover)]; |
head = &tcp_bhash[tcp_bhashfn(rover)]; |
1611 |
spin_lock(&head->lock); |
spin_lock(&head->lock); |
1612 |
+ /***** SAKURA Linux start. *****/ |
+ /***** SAKURA Linux start. *****/ |
1613 |
+ if (ccs_may_autobind(rover)) |
+ if (ccs_lport_reserved(rover)) |
1614 |
+ goto next; |
+ goto next; |
1615 |
+ /***** SAKURA Linux end. *****/ |
+ /***** SAKURA Linux end. *****/ |
1616 |
for (tb = head->chain; tb; tb = tb->next) |
for (tb = head->chain; tb; tb = tb->next) |
1633 |
((result - sysctl_local_port_range[0]) & |
((result - sysctl_local_port_range[0]) & |
1634 |
(UDP_HTABLE_SIZE - 1)); |
(UDP_HTABLE_SIZE - 1)); |
1635 |
+ /***** SAKURA Linux start. *****/ |
+ /***** SAKURA Linux start. *****/ |
1636 |
+ if (ccs_may_autobind(result)) |
+ if (ccs_lport_reserved(result)) |
1637 |
+ continue; |
+ continue; |
1638 |
+ /***** SAKURA Linux end. *****/ |
+ /***** SAKURA Linux end. *****/ |
1639 |
goto gotit; |
goto gotit; |
1644 |
+ ((result - sysctl_local_port_range[0]) & |
+ ((result - sysctl_local_port_range[0]) & |
1645 |
(UDP_HTABLE_SIZE - 1)); |
(UDP_HTABLE_SIZE - 1)); |
1646 |
+ /***** SAKURA Linux start. *****/ |
+ /***** SAKURA Linux start. *****/ |
1647 |
+ if (ccs_may_autobind(result)) |
+ if (ccs_lport_reserved(result)) |
1648 |
+ continue; |
+ continue; |
1649 |
+ /***** SAKURA Linux end. *****/ |
+ /***** SAKURA Linux end. *****/ |
1650 |
if (!udp_lport_inuse(result)) |
if (!udp_lport_inuse(result)) |