オープンソース・ソフトウェアの開発とダウンロード

Subversion リポジトリの参照

Diff of /trunk/1.8.x/ccs-patch/patches/ccs-patch-2.4.37.diff

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 2290 by kumaneko, Sat Mar 21 02:09:49 2009 UTC revision 2300 by kumaneko, Mon Mar 23 07:18:52 2009 UTC
# Line 2  This is TOMOYO Linux patch for kernel 2. Line 2  This is TOMOYO Linux patch for kernel 2.
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
# Line 736  Source code for this patch is http://www Line 736  Source code for this patch is http://www
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 */
# Line 864  Source code for this patch is http://www Line 864  Source code for this patch is http://www
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)) {
# Line 889  Source code for this patch is http://www Line 900  Source code for this patch is http://www
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)) {
# Line 901  Source code for this patch is http://www Line 912  Source code for this patch is http://www
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)) {
# Line 926  Source code for this patch is http://www Line 938  Source code for this patch is http://www
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)) {
# Line 939  Source code for this patch is http://www Line 951  Source code for this patch is http://www
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;
# Line 1405  Source code for this patch is http://www Line 1417  Source code for this patch is http://www
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) {
# Line 1534  Source code for this patch is http://www Line 1445  Source code for this patch is http://www
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          }          }
# Line 1631  Source code for this patch is http://www Line 1542  Source code for this patch is http://www
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)
# Line 1642  Source code for this patch is http://www Line 1553  Source code for this patch is http://www
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    
# Line 1665  Source code for this patch is http://www Line 1576  Source code for this patch is http://www
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;
# Line 1676  Source code for this patch is http://www Line 1587  Source code for this patch is http://www
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))
# Line 1699  Source code for this patch is http://www Line 1610  Source code for this patch is http://www
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)
# Line 1722  Source code for this patch is http://www Line 1633  Source code for this patch is http://www
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;
# Line 1733  Source code for this patch is http://www Line 1644  Source code for this patch is http://www
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))

Legend:
Removed from v.2290  
changed lines
  Added in v.2300

Back to OSDN">Back to OSDN
ViewVC Help
Powered by ViewVC 1.1.26