From: Michael 'Mickey' Lauer Date: Thu, 4 Feb 2010 00:15:48 +0000 (+0100) Subject: linux: bind mount(2) and friends as well as the rest of net/if.h, net/route.h X-Git-Tag: 0.7.10~9 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=ea914d1415db1daeaa84f823b6fa55251e9a1276;p=thirdparty%2Fvala.git linux: bind mount(2) and friends as well as the rest of net/if.h, net/route.h --- diff --git a/vapi/linux.vapi b/vapi/linux.vapi index 5b029ed4e..a28cfc2f8 100644 --- a/vapi/linux.vapi +++ b/vapi/linux.vapi @@ -161,7 +161,42 @@ namespace Linux { public void backtrace_symbols_fd (void* buffer, int size, int fd); [CCode (cheader_filename = "arpa/inet.h")] - public int inet_aton(string cp, out Posix.InAddr addr); + public int inet_aton (string cp, out Posix.InAddr addr); + + [CCode (cname = "long", cprefix = "", cheader_filename = "sys/mount.h,linux/fs.h")] + public enum MountFlags { + MS_BIND, + MS_DIRSYNC, + MS_MANDLOCK, + MS_MOVE, + MS_NOATIME, + MS_NODEV, + MS_NODIRATIME, + MS_NOEXEC, + MS_NOSUID, + MS_RDONLY, + MS_RELATIME, + MS_REMOUNT, + MS_SILENT, + MS_SYNCHRONOUS, + S_WRITE, + S_APPEND, + S_IMMUTABLE, + } + + [CCode (cname = "int", cprefix = "", cheader_filename = "sys/mount.h")] + public enum UnmountFlags { + MNT_FORCE, /* Force unmounting. */ + MNT_DETACH, /* Just detach from the tree. */ + MNT_EXPIRE /* Mark for expiry. */ + } + + [CCode (cheader_filename = "sys/mount.h")] + public int mount (string source, string target, string filesystemtype, MountFlags flags = 0, string options = ""); + [CCode (cheader_filename = "sys/mount.h")] + public int umount (string target); + [CCode (cheader_filename = "sys/mount.h")] + public int umount2 (string target, UnmountFlags flags); [CCode (cname = "struct winsize", cheader_filename = "termios.h", destroy_function = "")] public struct winsize { @@ -257,7 +292,7 @@ namespace Linux { // syscall(2) [CCode (cprefix = "SYS_", cname = "int")] public enum SysCall { - gettid + gettid } [CCode (cname = "syscall", cheader_filename = "unistd.h,sys/syscall.h")] @@ -271,17 +306,118 @@ namespace Linux { } [CCode (cheader_filename = "sys/mman.h")] - public void *mremap(void *old_address, size_t old_size, size_t new_size, MremapFlags flags); + public void *mremap (void *old_address, size_t old_size, size_t new_size, MremapFlags flags); /* * Network */ [CCode (cprefix = "", lower_case_cprefix = "")] namespace Network { + + // interface consts, structs, and methods + [CCode (cheader_filename = "net/if.h")] + public const int IF_NAMESIZ; + + [CCode (cheader_filename = "net/if.h")] + public uint if_nametoindex (string ifname); + [CCode (cheader_filename = "net/if.h")] + public unowned string if_indextoname (uint ifindex, string ifname); + [CCode (cheader_filename = "net/if.h")] + public IfNameindex if_nameindex (); + + [CCode (cname = "int", cprefix = "IFF_", cheader_filename = "net/if.h")] + public enum IfFlag { + UP, + BROADCAST, + DEBUG, + LOOPBACK, + POINTOPOINT, + NOTRAILERS, + RUNNING, + NOARP, + PROMISC, + ALLMULTI, + MASTER, + SLAVE, + PORTSEL, + AUTOMEDIA, + DYNAMIC + } + + [CCode (cname = "struct if_nameindex", cheader_filename = "net/if.h", destroy_function = "if_freenameindex")] + public struct IfNameindex { + public uint if_index; + public string if_name; + } + + [CCode (cname = "struct ifmap", cheader_filename = "net/if.h", destroy_function = "")] + public struct IfMap { + public ulong mem_start; + public ulong mem_end; + public short base_addr; + public uchar irq; + public uchar dma; + public uchar port; + } + [CCode (cname = "struct ifreq", cheader_filename = "net/if.h", destroy_function = "")] public struct IfReq { public char[] ifr_name; public Posix.SockAddr ifr_addr; + public Posix.SockAddr ifr_dstaddr; + public Posix.SockAddr ifr_broadaddr; + public Posix.SockAddr ifr_netmask; + public Posix.SockAddr ifr_hwaddr; + public short ifr_flags; + public int ifr_metric; + public int ifr_mtu; + public IfMap ifr_map; + public char[] ifr_slave; + public string ifr_data; + public int ifr_ifindex; + public int ifr_bandwidth; + public int ifr_qlen; + public char[] ifr_newname; + } + + [CCode (cname = "struct ifconf", cheader_filename = "net/if.h", destroy_function = "")] + public struct IfConf { + public int ifc_len; + public string ifc_buf; + public IfReq ifc_req; + } + + // route consts, structs, and methods + [CCode (cname = "struct rtentry", cheader_filename = "net/route.h", destroy_function = "")] + public struct RtEntry { + public Posix.SockAddr rt_dst; + public Posix.SockAddr rt_gateway; + public Posix.SockAddr rt_genmask; + public RtFlag rt_flags; + public short rt_metric; + public string rt_dev; + public ulong rt_mtu; + public ulong rt_window; + public ushort rt_irtt; + } + + [CCode (cname = "ushort", cprefix = "RTF_", cheader_filename = "net/route.h")] + public enum RtFlag { + UP, + GATEWAY, + HOST, + REINSTATE, + DYNAMIC, + MODIFIED, + MTU, + WINDOW, + IRTT, + REJECT, + STATIC, + XRESOLVE, + NOFORWARD, + THROW, + NOPMTUDISC } /* ioctls */