syscall-compat.hc (1634B)
1 // $Id$ --*- c++ -*-- 2 3 // Copyright (C) 2003 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de> 4 // 5 // This program is free software; you can redistribute it and/or modify 6 // it under the terms of the GNU General Public License as published by 7 // the Free Software Foundation; version 2 of the License. 8 // 9 // This program is distributed in the hope that it will be useful, 10 // but WITHOUT ANY WARRANTY; without even the implied warranty of 11 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 // GNU General Public License for more details. 13 // 14 // You should have received a copy of the GNU General Public License 15 // along with this program; if not, write to the Free Software 16 // Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 17 18 19 #ifdef HAVE_CONFIG_H 20 # include <config.h> 21 #endif 22 #include "compat.h" 23 24 #include "safechroot-internal.hc" 25 #include "vserver.h" 26 27 #include <unistd.h> 28 29 static inline ALWAYSINLINE xid_t 30 vc_new_s_context_compat(xid_t ctx, unsigned int remove_cap, unsigned int flags) 31 { 32 struct vcmd_new_s_context_v1 msg; 33 msg.remove_cap = remove_cap; 34 msg.flags = flags; 35 36 return vserver(VCMD_new_s_context, CTX_USER2KERNEL(ctx), &msg); 37 } 38 39 static inline ALWAYSINLINE int 40 vc_set_ipv4root_compat(uint32_t bcast, size_t nb, struct vc_ip_mask_pair const *ips) 41 { 42 struct vcmd_set_ipv4root_v3 msg; 43 size_t i; 44 45 if (nb>NB_IPV4ROOT) { 46 errno = -EOVERFLOW; 47 return -1; 48 } 49 50 msg.broadcast = bcast; 51 52 for (i=0; i<nb; ++i) { 53 msg.nx_mask_pair[i].ip = ips[i].ip; 54 msg.nx_mask_pair[i].mask = ips[i].mask; 55 } 56 57 return vserver(VCMD_set_ipv4root, nb, &msg); 58 }