Diff for /embedaddon/mpd/src/l2tp.c between versions 1.1.1.4 and 1.1.1.4.2.1

version 1.1.1.4, 2021/03/17 00:39:23 version 1.1.1.4.2.1, 2023/09/27 11:08:00
Line 1374  L2tpServerEvent(int type, void *arg) Line 1374  L2tpServerEvent(int type, void *arg)
         struct ngm_mkpeer mkpeer;          struct ngm_mkpeer mkpeer;
         struct sockaddr_storage peer_sas;          struct sockaddr_storage peer_sas;
         struct sockaddr_storage sas;          struct sockaddr_storage sas;
           struct u_addr server_addr;
         const size_t bufsize = 8192;          const size_t bufsize = 8192;
         u_int16_t *buf = NULL;          u_int16_t *buf = NULL;
         char hook[NG_HOOKSIZ];          char hook[NG_HOOKSIZ];
Line 1393  L2tpServerEvent(int type, void *arg) Line 1394  L2tpServerEvent(int type, void *arg)
         /* Allocate buffer */          /* Allocate buffer */
         buf = Malloc(MB_PHYS, bufsize);          buf = Malloc(MB_PHYS, bufsize);
   
           u_addrcopy(&s->self_addr, &server_addr);
           
         /* Read packet */          /* Read packet */
         sas_len = sizeof(peer_sas);          sas_len = sizeof(peer_sas);
        if ((len = recvfrom(s->sock, buf, bufsize, 0,
         if (u_addrempty(&s->self_addr)) {
             if ((len = GetDataAddrs(s->sock, buf, bufsize,
                         &peer_sas, sas_len, &server_addr)) == -1) {
                 Perror("L2TP: GetDataAddrs");
                 goto fail;
             }
         } else if ((len = recvfrom(s->sock, buf, bufsize, 0,
             (struct sockaddr *)&peer_sas, &sas_len)) == -1) {              (struct sockaddr *)&peer_sas, &sas_len)) == -1) {
                 Perror("L2TP: recvfrom");                  Perror("L2TP: recvfrom");
                 goto fail;                  goto fail;
Line 1415  L2tpServerEvent(int type, void *arg) Line 1425  L2tpServerEvent(int type, void *arg)
         tun->self_port = s->self_port;          tun->self_port = s->self_port;
         tun->alive = 1;          tun->alive = 1;
   
        Log(LG_PHYS, ("Incoming L2TP packet from %s %d",         if (u_addrempty(&tun->self_addr))
                u_addrtoa(&tun->peer_addr, namebuf, sizeof(namebuf)), tun->peer_port));                u_addrcopy(&server_addr, &tun->self_addr);
   
           if (u_addrempty(&tun->self_addr))
                   Log(LG_PHYS, ("Incoming L2TP packet from %s %d",
                       u_addrtoa(&tun->peer_addr, namebuf, sizeof(namebuf)),
                       tun->peer_port));
           else {
               char buf3[INET_ADDRSTRLEN];
   
               Log(LG_PHYS, ("Incoming L2TP packet from %s %d to %s %d",
                   u_addrtoa(&tun->peer_addr, namebuf, sizeof(namebuf)),
                   tun->peer_port,
                   u_addrtoa(&tun->self_addr, buf3, sizeof(buf3)),
                   tun->self_port));
           }
   
         /* Examine all L2TP links to get best possible fit tunnel parameters. */          /* Examine all L2TP links to get best possible fit tunnel parameters. */
         for (k = 0; k < gNumLinks; k++) {          for (k = 0; k < gNumLinks; k++) {
                 Link l2;                  Link l2;
Line 1552  L2tpServerEvent(int type, void *arg) Line 1576  L2tpServerEvent(int type, void *arg)
         }          }
   
         /* Bind socket to a new port */          /* Bind socket to a new port */
        u_addrtosockaddr(&s->self_addr,s->self_port,&sas);        u_addrtosockaddr(&tun->self_addr,tun->self_port,&sas);
         if (NgSendMsg(csock, namebuf, NGM_KSOCKET_COOKIE,          if (NgSendMsg(csock, namebuf, NGM_KSOCKET_COOKIE,
             NGM_KSOCKET_BIND, &sas, sas.ss_len) == -1) {              NGM_KSOCKET_BIND, &sas, sas.ss_len) == -1) {
                 Perror("L2TP: bind");                  Perror("L2TP: bind");
Line 1632  L2tpListen(Link l) Line 1656  L2tpListen(Link l)
                   
         /* Setup UDP socket that listens for new connections */          /* Setup UDP socket that listens for new connections */
         if (s->self_addr.family==AF_INET6) {          if (s->self_addr.family==AF_INET6) {
                s->sock = socket(PF_INET6, SOCK_DGRAM, IPPROTO_UDP);                s->sock = socket(PF_INET6, socktype(SOCK_DGRAM), IPPROTO_UDP);
         } else {          } else {
                s->sock = socket(PF_INET, SOCK_DGRAM, IPPROTO_UDP);                s->sock = socket(PF_INET, socktype(SOCK_DGRAM), IPPROTO_UDP);
         }          }
         if (s->sock == -1) {          if (s->sock == -1) {
                 Perror("L2TP: socket");                  Perror("L2TP: socket");
Line 1649  L2tpListen(Link l) Line 1673  L2tpListen(Link l)
             SO_REUSEPORT, &one, sizeof(one)) == -1) {              SO_REUSEPORT, &one, sizeof(one)) == -1) {
                 Perror("L2TP: setsockopt");                  Perror("L2TP: setsockopt");
                 goto fail;                  goto fail;
           }
           if (u_addrempty(&s->self_addr)) {
                   int on = 1;
                   setsockopt(s->sock, IPPROTO_IP, IP_RECVDSTADDR, &on, sizeof(on));
         }          }
         u_addrtosockaddr(&s->self_addr, s->self_port, &sa);          u_addrtosockaddr(&s->self_addr, s->self_port, &sa);
         if (bind(s->sock, (struct sockaddr *)&sa, sa.ss_len) == -1) {          if (bind(s->sock, (struct sockaddr *)&sa, sa.ss_len) == -1) {

Removed from v.1.1.1.4  
changed lines
  Added in v.1.1.1.4.2.1


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>