Deleted Added
full compact
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 ---