udp6_usrreq.c (127504) | udp6_usrreq.c (127505) |
---|---|
1/* $FreeBSD: head/sys/netinet6/udp6_usrreq.c 127504 2004-03-27 20:41:32Z pjd $ */ | 1/* $FreeBSD: head/sys/netinet6/udp6_usrreq.c 127505 2004-03-27 21:05:46Z pjd $ */ |
2/* $KAME: udp6_usrreq.c,v 1.27 2001/05/21 05:45:10 jinmei Exp $ */ 3 4/* 5 * Copyright (C) 1995, 1996, 1997, and 1998 WIDE Project. 6 * All rights reserved. 7 * 8 * Redistribution and use in source and binary forms, with or without 9 * modification, are permitted provided that the following conditions --- 557 unchanged lines hidden (view full) --- 567 inp->inp_vflag |= INP_IPV4; 568 else if (IN6_IS_ADDR_V4MAPPED(&sin6_p->sin6_addr)) { 569 struct sockaddr_in sin; 570 571 in6_sin6_2_sin(&sin, sin6_p); 572 inp->inp_vflag |= INP_IPV4; 573 inp->inp_vflag &= ~INP_IPV6; 574 s = splnet(); | 2/* $KAME: udp6_usrreq.c,v 1.27 2001/05/21 05:45:10 jinmei Exp $ */ 3 4/* 5 * Copyright (C) 1995, 1996, 1997, and 1998 WIDE Project. 6 * All rights reserved. 7 * 8 * Redistribution and use in source and binary forms, with or without 9 * modification, are permitted provided that the following conditions --- 557 unchanged lines hidden (view full) --- 567 inp->inp_vflag |= INP_IPV4; 568 else if (IN6_IS_ADDR_V4MAPPED(&sin6_p->sin6_addr)) { 569 struct sockaddr_in sin; 570 571 in6_sin6_2_sin(&sin, sin6_p); 572 inp->inp_vflag |= INP_IPV4; 573 inp->inp_vflag &= ~INP_IPV6; 574 s = splnet(); |
575 error = in_pcbbind(inp, (struct sockaddr *)&sin, td); | 575 error = in_pcbbind(inp, (struct sockaddr *)&sin, 576 td->td_ucred); |
576 splx(s); 577 return error; 578 } 579 } 580 581 s = splnet(); | 577 splx(s); 578 return error; 579 } 580 } 581 582 s = splnet(); |
582 error = in6_pcbbind(inp, nam, td); | 583 error = in6_pcbbind(inp, nam, td->td_ucred); |
583 splx(s); 584 return error; 585} 586 587static int 588udp6_connect(struct socket *so, struct sockaddr *nam, struct thread *td) 589{ 590 struct inpcb *inp; --- 9 unchanged lines hidden (view full) --- 600 sin6_p = (struct sockaddr_in6 *)nam; 601 if (IN6_IS_ADDR_V4MAPPED(&sin6_p->sin6_addr)) { 602 struct sockaddr_in sin; 603 604 if (inp->inp_faddr.s_addr != INADDR_ANY) 605 return EISCONN; 606 in6_sin6_2_sin(&sin, sin6_p); 607 s = splnet(); | 584 splx(s); 585 return error; 586} 587 588static int 589udp6_connect(struct socket *so, struct sockaddr *nam, struct thread *td) 590{ 591 struct inpcb *inp; --- 9 unchanged lines hidden (view full) --- 601 sin6_p = (struct sockaddr_in6 *)nam; 602 if (IN6_IS_ADDR_V4MAPPED(&sin6_p->sin6_addr)) { 603 struct sockaddr_in sin; 604 605 if (inp->inp_faddr.s_addr != INADDR_ANY) 606 return EISCONN; 607 in6_sin6_2_sin(&sin, sin6_p); 608 s = splnet(); |
608 error = in_pcbconnect(inp, (struct sockaddr *)&sin, td); | 609 error = in_pcbconnect(inp, (struct sockaddr *)&sin, 610 td->td_ucred); |
609 splx(s); 610 if (error == 0) { 611 inp->inp_vflag |= INP_IPV4; 612 inp->inp_vflag &= ~INP_IPV6; 613 soisconnected(so); 614 } 615 return error; 616 } 617 } 618 if (!IN6_IS_ADDR_UNSPECIFIED(&inp->in6p_faddr)) 619 return EISCONN; 620 s = splnet(); | 611 splx(s); 612 if (error == 0) { 613 inp->inp_vflag |= INP_IPV4; 614 inp->inp_vflag &= ~INP_IPV6; 615 soisconnected(so); 616 } 617 return error; 618 } 619 } 620 if (!IN6_IS_ADDR_UNSPECIFIED(&inp->in6p_faddr)) 621 return EISCONN; 622 s = splnet(); |
621 error = in6_pcbconnect(inp, nam, td); | 623 error = in6_pcbconnect(inp, nam, td->td_ucred); |
622 splx(s); 623 if (error == 0) { 624 if (!ip6_v6only) { /* should be non mapped addr */ 625 inp->inp_vflag &= ~INP_IPV4; 626 inp->inp_vflag |= INP_IPV6; 627 } 628 soisconnected(so); 629 } --- 131 unchanged lines hidden --- | 624 splx(s); 625 if (error == 0) { 626 if (!ip6_v6only) { /* should be non mapped addr */ 627 inp->inp_vflag &= ~INP_IPV4; 628 inp->inp_vflag |= INP_IPV6; 629 } 630 soisconnected(so); 631 } --- 131 unchanged lines hidden --- |