Changeset 31563 for packages


Ignore:
Timestamp:
2012-05-02T21:28:14+02:00 (4 years ago)
Author:
juhosg
Message:

xl2tpd: Remove modprobe invocation from kernel-mode patch

Signed-off-by: David Woodhouse <David.Woodhouse@…>

File:
1 edited

Legend:

Unmodified
Added
Removed
  • packages/net/xl2tpd/patches/120-kernel-mode-l2tp.patch

    r31561 r31563  
    109109--- a/network.c 
    110110+++ b/network.c 
    111 @@ -22,6 +22,7 @@ 
    112  #include <unistd.h> 
    113  #include <stdlib.h> 
    114  #include <sys/ioctl.h> 
    115 +#include <sys/wait.h> 
    116  #ifndef LINUX 
    117  # include <sys/uio.h> 
    118  #endif 
    119 @@ -36,6 +37,51 @@ int server_socket;              /* Server socket */ 
    120  int kernel_support;             /* Kernel Support there or not? */ 
    121  #endif 
    122   
    123 +#ifdef USE_KERNEL 
    124 +void modprobe() { 
    125 +    char * modules[] = { "l2tp_ppp", "pppol2tp", NULL }; 
    126 +    char ** module; 
    127 +    char buf[256], *tok; 
    128 +    int pid, exit_status, fd; 
    129 + 
    130 +    FILE * fmod = fopen("/proc/modules", "r"); 
    131 + 
    132 +    if (fmod == NULL) 
    133 +        return; 
    134 + 
    135 +    while (fgets(buf, 255, fmod) != NULL) { 
    136 +        if ((tok = strtok(buf, " ")) != NULL) { 
    137 +            for (module = modules; *module != NULL; ++module) { 
    138 +                if (!strcmp(*module, tok)) { 
    139 +                    fclose(fmod); 
    140 +                    return; 
    141 +                } 
    142 +            } 
    143 +        } 
    144 +    } 
    145 + 
    146 +    fclose(fmod); 
    147 + 
    148 +    for (module = modules; *module != NULL; ++module) { 
    149 +        if ((pid = fork()) >= 0) { 
    150 +            if (pid == 0) { 
    151 +                setenv("PATH", "/sbin:/usr/sbin:/bin:/usr/bin", 1); 
    152 +                if ((fd = open("/dev/null", O_RDWR)) > -1) { 
    153 +                    dup2(fd, 1); 
    154 +                    dup2(fd, 2); 
    155 +                } 
    156 +                execlp("modprobe", "modprobe", "-q", *module, (char *)NULL); 
    157 +                exit(1); 
    158 +            } else { 
    159 +                if ((pid = waitpid(pid, &exit_status, 0)) != -1 && WIFEXITED(exit_status)) { 
    160 +                    if (WEXITSTATUS(exit_status) == 0) 
    161 +                        return; 
    162 +                } 
    163 +            } 
    164 +        } 
    165 +    } 
    166 +} 
    167 +#endif 
    168   
    169  int init_network (void) 
    170  { 
    171111@@ -45,6 +91,7 @@ int init_network (void) 
    172112     server.sin_family = AF_INET; 
     
    188128     { 
    189129         close (server_socket); 
    190 @@ -91,6 +142,7 @@ int init_network (void) 
    191      } 
    192      else 
    193      { 
    194 +        modprobe(); 
    195          int kernel_fd = socket(AF_PPPOX, SOCK_DGRAM, PX_PROTO_OL2TP); 
    196          if (kernel_fd < 0) 
    197          { 
    198130@@ -321,6 +373,11 @@ int build_fdset (fd_set *readfds) 
    199131  
Note: See TracChangeset for help on using the changeset viewer.