1/*- 2 * Copyright (c) 1999, 2000, 2001, 2002 Robert N. M. Watson 3 * Copyright (c) 2001 Ilmar S. Habibulin 4 * Copyright (c) 2001, 2002 Networks Associates Technology, Inc. 5 * All rights reserved. 6 * 7 * This software was developed by Robert Watson and Ilmar Habibulin for the 8 * TrustedBSD Project. --- 22 unchanged lines hidden (view full) --- 31 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 32 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 33 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 34 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 35 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 36 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 37 * SUCH DAMAGE. 38 * |
39 * $FreeBSD: head/sys/security/mac/mac_net.c 102123 2002-08-19 17:59:48Z rwatson $ |
40 */ 41/* 42 * Developed by the TrustedBSD Project. 43 * 44 * Framework for extensible kernel access control. Kernel and userland 45 * interface to the framework, policy registration and composition. 46 */ 47 --- 328 unchanged lines hidden (view full) --- 376 case MAC_DESTROY: 377 mpc->mpc_ops->mpo_destroy = 378 mpe->mpe_function; 379 break; 380 case MAC_INIT: 381 mpc->mpc_ops->mpo_init = 382 mpe->mpe_function; 383 break; |
384 case MAC_SYSCALL: 385 mpc->mpc_ops->mpo_syscall = 386 mpe->mpe_function; 387 break; |
388 case MAC_INIT_BPFDESC: 389 mpc->mpc_ops->mpo_init_bpfdesc = 390 mpe->mpe_function; 391 break; 392 case MAC_INIT_CRED: 393 mpc->mpc_ops->mpo_init_cred = 394 mpe->mpe_function; 395 break; --- 2816 unchanged lines hidden (view full) --- 3212out2: 3213 mac_destroy_temp(&intlabel); 3214 NDFREE(&nd, 0); 3215out: 3216 mtx_unlock(&Giant); 3217 return (error); 3218} 3219 |
3220int 3221mac_syscall(struct thread *td, struct mac_syscall_args *uap) 3222{ 3223 struct mac_policy_conf *mpc; 3224 char target[MAC_MAX_POLICY_NAME]; 3225 int error; 3226 3227 error = copyinstr(SCARG(uap, policy), target, sizeof(target), NULL); 3228 if (error) 3229 return (error); 3230 3231 error = ENOSYS; 3232 MAC_POLICY_LIST_BUSY(); 3233 LIST_FOREACH(mpc, &mac_policy_list, mpc_list) { 3234 if (strcmp(mpc->mpc_name, target) == 0 && 3235 mpc->mpc_ops->mpo_syscall != NULL) { 3236 error = mpc->mpc_ops->mpo_syscall(td, 3237 SCARG(uap, call), SCARG(uap, arg)); 3238 goto out; 3239 } 3240 } 3241 3242out: 3243 MAC_POLICY_LIST_UNBUSY(); 3244 return (error); 3245} 3246 |
3247SYSINIT(mac, SI_SUB_MAC, SI_ORDER_FIRST, mac_init, NULL); 3248SYSINIT(mac_late, SI_SUB_MAC_LATE, SI_ORDER_FIRST, mac_late_init, NULL); 3249 3250#else /* !MAC */ 3251 3252int 3253__mac_get_proc(struct thread *td, struct __mac_get_proc_args *uap) 3254{ --- 31 unchanged lines hidden (view full) --- 3286 3287int 3288__mac_set_file(struct thread *td, struct __mac_set_file_args *uap) 3289{ 3290 3291 return (ENOSYS); 3292} 3293 |
3294int 3295mac_syscall(struct thread *td, struct mac_syscall_args *uap) 3296{ 3297 3298 return (ENOSYS); 3299} 3300 |
3301#endif /* !MAC */ |