*
* @APPLE_LICENSE_HEADER_START@
*
- * Copyright (c) 1999-2003 Apple Computer, Inc. All Rights Reserved.
+ * The contents of this file constitute Original Code as defined in and
+ * are subject to the Apple Public Source License Version 1.1 (the
+ * "License"). You may not use this file except in compliance with the
+ * License. Please obtain a copy of the License at
+ * http://www.apple.com/publicsource and read it before using this file.
*
- * This file contains Original Code and/or Modifications of Original Code
- * as defined in and that are subject to the Apple Public Source License
- * Version 2.0 (the 'License'). You may not use this file except in
- * compliance with the License. Please obtain a copy of the License at
- * http://www.opensource.apple.com/apsl/ and read it before using this
- * file.
- *
- * The Original Code and all software distributed under the License are
- * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
+ * This Original Code and all software distributed under the License are
+ * distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, EITHER
* EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
* INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
- * Please see the License for the specific language governing rights and
- * limitations under the License.
+ * FITNESS FOR A PARTICULAR PURPOSE OR NON-INFRINGEMENT. Please see the
+ * License for the specific language governing rights and limitations
+ * under the License.
*
* @APPLE_LICENSE_HEADER_END@
*/
int ddp_pru_attach(struct socket *so, int proto,
struct proc *p)
{
- int s, error = 0;
+ int error = 0;
at_ddp_t *ddp = NULL;
struct atpcb *pcb = (struct atpcb *)((so)->so_pcb);
if (error != 0)
return error;
- s = splnet();
error = at_pcballoc(so, &ddp_head);
- splx(s);
if (error)
return error;
pcb = (struct atpcb *)((so)->so_pcb);
- pcb->pid = current_proc()->p_pid;
+ pcb->pid = proc_selfpid();
pcb->ddptype = (u_char) proto; /* set in socreate() */
pcb->proto = ATPROTO_DDP;
int ddp_pru_disconnect(struct socket *so)
{
- int s, error = 0;
+ int error = 0;
at_ddp_t *ddp = NULL;
struct atpcb *pcb = (struct atpcb *)((so)->so_pcb);
return ENOTCONN;
soisdisconnected(so);
- s = splnet();
at_pcbdetach(pcb);
- splx(s);
return error;
}
int ddp_pru_abort(struct socket *so)
{
- int s;
struct atpcb *pcb = (struct atpcb *)((so)->so_pcb);
if (pcb == NULL)
return (EINVAL);
soisdisconnected(so);
- s = splnet();
at_pcbdetach(pcb);
- splx(s);
return 0;
}
int ddp_pru_detach(struct socket *so)
{
- int s;
struct atpcb *pcb = (struct atpcb *)((so)->so_pcb);
if (pcb == NULL)
return (EINVAL);
- s = splnet();
at_pcbdetach(pcb);
- splx(s);
return 0;
}
}
}
if (ddp) {
- ddp->length = m->m_pkthdr.len;
- UAS_ASSIGN(ddp->checksum,
+ DDPLEN_ASSIGN(ddp, m->m_pkthdr.len);
+ UAS_ASSIGN_HTON(ddp->checksum,
(pcb->ddp_flags & DDPFLG_CHKSUM)? 1: 0);
ddp->type = (pcb->ddptype)? pcb->ddptype: DEFAULT_OT_DDPTYPE;
#ifdef NOT_YET
NET_ASSIGN(ddp->src_net, ifID->ifThisNode.s_net);
ddp->src_node = ifID->ifThisNode.s_node;
ddp->src_socket = pcb->lport;
- if (UAS_VALUE(ddp->checksum))
- UAS_ASSIGN(ddp->checksum, ddp_checksum(m, 4));
+ if (UAS_VALUE_NTOH(ddp->checksum))
+ UAS_ASSIGN_HTON(ddp->checksum, ddp_checksum(m, 4));
ddp_input(n, ifID);
}
}
int ddp_pru_sockaddr(struct socket *so,
struct sockaddr **nam)
{
- int s;
struct atpcb *pcb;
struct sockaddr_at *sat;
return(ENOMEM);
bzero((caddr_t)sat, sizeof(*sat));
- s = splnet();
if ((pcb = sotoatpcb(so)) == NULL) {
- splx(s);
FREE(sat, M_SONAME);
return(EINVAL);
}
sat->sat_len = sizeof(*sat);
sat->sat_port = pcb->lport;
sat->sat_addr = pcb->laddr;
- splx(s);
*nam = (struct sockaddr *)sat;
return(0);
int ddp_pru_peeraddr(struct socket *so,
struct sockaddr **nam)
{
- int s;
struct atpcb *pcb;
struct sockaddr_at *sat;
return (ENOMEM);
bzero((caddr_t)sat, sizeof(*sat));
- s = splnet();
if ((pcb = sotoatpcb(so)) == NULL) {
- splx(s);
FREE(sat, M_SONAME);
return(EINVAL);
}
sat->sat_len = sizeof(*sat);
sat->sat_port = pcb->rport;
sat->sat_addr = pcb->raddr;
- splx(s);
*nam = (struct sockaddr *)sat;
return(0);