sys_socket.c (1542) | sys_socket.c (1549) |
---|---|
1/* 2 * Copyright (c) 1982, 1986, 1990, 1993 3 * The Regents of the University of California. All rights reserved. 4 * 5 * Redistribution and use in source and binary forms, with or without 6 * modification, are permitted provided that the following conditions 7 * are met: 8 * 1. Redistributions of source code must retain the above copyright --- 37 unchanged lines hidden (view full) --- 46 47#include <net/if.h> 48#include <net/route.h> 49 50struct fileops socketops = 51 { soo_read, soo_write, soo_ioctl, soo_select, soo_close }; 52 53/* ARGSUSED */ | 1/* 2 * Copyright (c) 1982, 1986, 1990, 1993 3 * The Regents of the University of California. All rights reserved. 4 * 5 * Redistribution and use in source and binary forms, with or without 6 * modification, are permitted provided that the following conditions 7 * are met: 8 * 1. Redistributions of source code must retain the above copyright --- 37 unchanged lines hidden (view full) --- 46 47#include <net/if.h> 48#include <net/route.h> 49 50struct fileops socketops = 51 { soo_read, soo_write, soo_ioctl, soo_select, soo_close }; 52 53/* ARGSUSED */ |
54int |
|
54soo_read(fp, uio, cred) 55 struct file *fp; 56 struct uio *uio; 57 struct ucred *cred; 58{ 59 60 return (soreceive((struct socket *)fp->f_data, (struct mbuf **)0, 61 uio, (struct mbuf **)0, (struct mbuf **)0, (int *)0)); 62} 63 64/* ARGSUSED */ | 55soo_read(fp, uio, cred) 56 struct file *fp; 57 struct uio *uio; 58 struct ucred *cred; 59{ 60 61 return (soreceive((struct socket *)fp->f_data, (struct mbuf **)0, 62 uio, (struct mbuf **)0, (struct mbuf **)0, (int *)0)); 63} 64 65/* ARGSUSED */ |
66int |
|
65soo_write(fp, uio, cred) 66 struct file *fp; 67 struct uio *uio; 68 struct ucred *cred; 69{ 70 71 return (sosend((struct socket *)fp->f_data, (struct mbuf *)0, 72 uio, (struct mbuf *)0, (struct mbuf *)0, 0)); 73} 74 | 67soo_write(fp, uio, cred) 68 struct file *fp; 69 struct uio *uio; 70 struct ucred *cred; 71{ 72 73 return (sosend((struct socket *)fp->f_data, (struct mbuf *)0, 74 uio, (struct mbuf *)0, (struct mbuf *)0, 0)); 75} 76 |
77int |
|
75soo_ioctl(fp, cmd, data, p) 76 struct file *fp; 77 int cmd; 78 register caddr_t data; 79 struct proc *p; 80{ 81 register struct socket *so = (struct socket *)fp->f_data; 82 --- 42 unchanged lines hidden (view full) --- 125 if (IOCGROUP(cmd) == 'i') 126 return (ifioctl(so, cmd, data, p)); 127 if (IOCGROUP(cmd) == 'r') 128 return (rtioctl(cmd, data, p)); 129 return ((*so->so_proto->pr_usrreq)(so, PRU_CONTROL, 130 (struct mbuf *)cmd, (struct mbuf *)data, (struct mbuf *)0)); 131} 132 | 78soo_ioctl(fp, cmd, data, p) 79 struct file *fp; 80 int cmd; 81 register caddr_t data; 82 struct proc *p; 83{ 84 register struct socket *so = (struct socket *)fp->f_data; 85 --- 42 unchanged lines hidden (view full) --- 128 if (IOCGROUP(cmd) == 'i') 129 return (ifioctl(so, cmd, data, p)); 130 if (IOCGROUP(cmd) == 'r') 131 return (rtioctl(cmd, data, p)); 132 return ((*so->so_proto->pr_usrreq)(so, PRU_CONTROL, 133 (struct mbuf *)cmd, (struct mbuf *)data, (struct mbuf *)0)); 134} 135 |
136int |
|
133soo_select(fp, which, p) 134 struct file *fp; 135 int which; 136 struct proc *p; 137{ 138 register struct socket *so = (struct socket *)fp->f_data; 139 register int s = splnet(); 140 --- 25 unchanged lines hidden (view full) --- 166 selrecord(p, &so->so_rcv.sb_sel); 167 so->so_rcv.sb_flags |= SB_SEL; 168 break; 169 } 170 splx(s); 171 return (0); 172} 173 | 137soo_select(fp, which, p) 138 struct file *fp; 139 int which; 140 struct proc *p; 141{ 142 register struct socket *so = (struct socket *)fp->f_data; 143 register int s = splnet(); 144 --- 25 unchanged lines hidden (view full) --- 170 selrecord(p, &so->so_rcv.sb_sel); 171 so->so_rcv.sb_flags |= SB_SEL; 172 break; 173 } 174 splx(s); 175 return (0); 176} 177 |
178int |
|
174soo_stat(so, ub) 175 register struct socket *so; 176 register struct stat *ub; 177{ 178 179 bzero((caddr_t)ub, sizeof (*ub)); 180 ub->st_mode = S_IFSOCK; 181 return ((*so->so_proto->pr_usrreq)(so, PRU_SENSE, 182 (struct mbuf *)ub, (struct mbuf *)0, 183 (struct mbuf *)0)); 184} 185 186/* ARGSUSED */ | 179soo_stat(so, ub) 180 register struct socket *so; 181 register struct stat *ub; 182{ 183 184 bzero((caddr_t)ub, sizeof (*ub)); 185 ub->st_mode = S_IFSOCK; 186 return ((*so->so_proto->pr_usrreq)(so, PRU_SENSE, 187 (struct mbuf *)ub, (struct mbuf *)0, 188 (struct mbuf *)0)); 189} 190 191/* ARGSUSED */ |
192int |
|
187soo_close(fp, p) 188 struct file *fp; 189 struct proc *p; 190{ 191 int error = 0; 192 193 if (fp->f_data) 194 error = soclose((struct socket *)fp->f_data); 195 fp->f_data = 0; 196 return (error); 197} | 193soo_close(fp, p) 194 struct file *fp; 195 struct proc *p; 196{ 197 int error = 0; 198 199 if (fp->f_data) 200 error = soclose((struct socket *)fp->f_data); 201 fp->f_data = 0; 202 return (error); 203} |