#include <sys/types.h>
#include <unistd.h>
#include <sys/syscall.h>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <sys/socket.h>
#include <ifaddrs.h>
#include <linux/if_packet.h>
#include <net/ethernet.h>
#if !defined __x86_64__
#include <asm-generic/unistd.h>
#endif
#include "sysdefs.h"


struct dhcp_request_t dhcp_request[] = {
	{ 0, "Padding" },
	{1,"Subnet Mask"},
	{2,"Time Offset"},
	{3,"Router"},
	{4,"Time Server"},
	{5,"Name Server"},
	{6,"Domain Server"},
	{7,"Log Server"},
	{8,"Quotes Server"},
	{9,"LPR Server"},
	{10,"Impress Server"},
	{11,"RLP Server"},
	{12,"Hostname"},
	{13,"Boot File Size"},
	{14,"Merit Dump File"},
	{15,"Domain Name"},
	{16,"Swap Server"},
	{17,"Root Path"},
	{18,"Extension File"},
	{19,"Forward On/Off"},
	{20,"SrcRte On/Off"},
	{21,"Policy Filter"},
	{22,"Max DG Assembly"},
	{23,"Default IP TTL"},
	{24,"MTU Timeout"},
	{25,"MTU Plateau"},
	{26,"MTU Interface"},
	{27,"MTU Subnet"},
	{28,"Broadcast Address"},
	{29,"Mask Discovery"},
	{30,"Mask Supplier"},
	{31,"Router Discovery"},
	{32,"Router Request"},
	{33,"Static Route"},
	{34,"Trailers"},
	{35,"ARP Timeout"},
	{36,"Ethernet"},
	{37,"Default TCP TTL"},
	{38,"Keepalive Time"},
	{39,"Keepalive Data"},
	{40,"NIS Domain"},
	{41,"NIS Servers"},
	{42,"NTP Servers"},
	{43,"Vendor Specific"},
	{44,"NETBIOS Name Srv"},
	{45,"NETBIOS Dist Srv"},
	{46,"NETBIOS Node Type"},
	{47,"NETBIOS Scope"},
	{48,"X Window Font"},
	{49,"X Window Manager"},
	{50,"Address Request"},
	{51,"Address Time"},
	{52,"Overload"},
	{53,"DHCP Msg Type"},
	{54,"DHCP Server Id"},
	{55,"Parameter List"},
	{56,"DHCP Message"},
	{57,"DHCP Max Msg Size"},
	{58,"Renewal Time"},
	{59,"Rebinding Time"},
	{60,"Class Id"},
	{61,"Client Id"},
	{62,"NetWare/IP Domain"},
	{63,"NetWare/IP Option"},
	{64,"NIS-Domain-Name"},
	{65,"NIS-Server-Addr"},
	{66,"Server-Name"},
	{67,"Bootfile-Name"},
	{68,"Home-Agent-Addrs"},
	{69,"SMTP-Server"},
	{70,"POP3-Server"},
	{71,"NNTP-Server"},
	{72,"WWW-Server"},
	{73,"Finger-Server"},
	{74,"IRC-Server"},
	{75,"StreetTalk-Server"},
	{76,"STDA-Server"},
	{77,"User-Class"},
	{78,"Directory Agent"},
	{79,"Service Scope"},
	{80,"Rapid Commit"},
	{81,"Client FQDN"},
	{82,"Relay Agent Information"},
	{83,"iSNS"},
	{85,"NDS Servers"},
	{86,"NDS Tree Name"},
	{87,"NDS Context"},
	{88,"BCMCS Controller Domain Name list"},
	{89,"BCMCS Controller IPv4 address option"},	
	{90,"Authentication"},
	{91,"client-last-transaction-time option"},
	{92,"associated-ip option"},	
	{93,"Client System"},
	{94,"Client NDI"},
	{95,"LDAP"},
	{97,"UUID/GUID"},
	{98,"User-Auth"},
	{99,"GEOCONF_CIVIC"},
	{100,"PCode"},
	{101,"TCode"},
	{109,"OPTION_DHCP4O6_S46_SADDR"},
	{112,"Netinfo Address"},
	{113,"Netinfo Tag"},
	{114,"URL"},
	{116,"Auto-Config"},
	{117,"Name Service Search"},
	{118,"Subnet Selection Option"},
	{119,"Domain Search"},
	{120,"SIP Servers DHCP Option"},
	{121,"Classless Static Route Option"},
	{122,"CCC"},
	{123,"GeoConf Option"},
	{124,"V-I Vendor Class"},
	{125,"V-I Vendor-Specific Information"},
	{126,"Removed/Unassigned"},
	{127,"Removed/Unassigned"},
	{128,"PXE - undefined (vendor specific)"},	
	{128,"TFTP Server IP address"},
	{129,"PXE - undefined (vendor specific)"},
	{129,"Kernel options. Variable length string"},		
	{129,"Call Server IP address"},		
	{130,"PXE - undefined (vendor specific)"},
	{130,"Ethernet interface. Variable length string."},		
	{130,"Discrimination string (to identify vendor)"},		
	{131,"PXE - undefined (vendor specific)"},
	{131,"Remote statistics server IP address"},		
	{132,"PXE - undefined (vendor specific)"},
	{132,"IEEE 802.1Q VLAN ID"},		
	{133,"PXE - undefined (vendor specific)"},
	{133,"IEEE 802.1D/p Layer 2 Priority"},
	{134,"PXE - undefined (vendor specific)"},
	{134,"Diffserv Code Point (DSCP) for VoIP signalling and media streams"},		
	{135,"PXE - undefined (vendor specific)"},
	{135,"HTTP Proxy for phone-specific applications"},		
	{136,"OPTION_PANA_AGENT"},
	{137,"OPTION_V4_LOST"},
	{138,"OPTION_CAPWAP_AC_V4"},
	{139,"OPTION-IPv4_Address-MoS"},
	{140,"OPTION-IPv4_FQDN-MoS"},
	{141,"SIP UA Configuration Service Domains"},
	{142,"OPTION-IPv4_Address-ANDSF"},
	{143,"OPTION_V4_SZTP_REDIRECT"},
	{144,"GeoLoc"},
	{145,"FORCERENEW_NONCE_CAPABLE"},
	{146,"RDNSS Selection"},
	{150,"TFTP server address"},	
	{150,"Etherboot"},		
	{150,"GRUB configuration path name"},		
	{151,"status-code"},
	{152,"base-time"},
	{153,"start-time-of-state"},
	{154,"query-start-time"},
	{155,"query-end-time"},
	{156,"dhcp-state"},
	{157,"data-source"},
	{158,"OPTION_V4_PCP_SERVER"},
	{159,"OPTION_V4_PORTPARAMS"},
	{160,"DHCP Captive-Portal"},
	{161,"OPTION_MUD_URL_V4"},
	{175,"Etherboot (Tentatively Assigned - 2005-06-23)"},		
	{176,"IP Telephone (Tentatively Assigned - 2005-06-23)"},		
	{177,"Etherboot (Tentatively Assigned - 2005-06-23)"},		
	{177,"PacketCable and CableHome (replaced by 122)"},		
	{208,"PXELINUX Magic"},
	{209,"Configuration File"},
	{210,"Path Prefix"},
	{211,"Reboot Time"},
	{212,"OPTION_6RD"},
	{213,"OPTION_V4_ACCESS_DOMAIN"},
	{220,"Subnet Allocation Option"},
	{221,"Virtual Subnet Selection (VSS) Option"},
	{ -1, NULL }
};

char *get_type_name(int code){
	static char retval[1024];
	int i;
	for ( i = 0; dhcp_request[i].name != NULL; i++ ){
		if ( dhcp_request[i].type == code ){
			return(dhcp_request[i].name);
		}
	}
	sprintf(retval,"UNKNOWN OPTION(%d)",code);
	return(retval);
}

int iff_cmpfunc(const void *_a, const void *_b){
        int cmpname;
        struct interface_config *a;
        struct interface_config *b;
        a = (struct interface_config *)_a;
        b = (struct interface_config *)_b;
        cmpname = strcmp(a->ethname,b->ethname);
        if ( cmpname != 0 ){
                return(cmpname);
        }
        if ( a->addrtype != b->addrtype )
                return(a->addrtype - b->addrtype);
        return(strcmp(a->addr,b->addr));
}



int get_interfaces(struct interface_config **_iff){
        struct ifaddrs *iff;
        struct ifaddrs *ifp;
        struct interface_config *ff;
        char addrbuf[1024];
        int count;
        count = 0;

        ff = NULL;

        if ( getifaddrs(&iff) < 0 ){
                return(-1);
        }
        ifp = iff;
        while ( ifp != NULL ){
                struct sockaddr_in *sock4;
                struct sockaddr_in6 *sock6;
                struct sockaddr_ll *sockll;
                if ( ifp->ifa_addr == NULL ){ ifp = ifp->ifa_next; continue;}
                ff = (struct interface_config *)realloc(ff,sizeof(struct interface_config) * (count+1));
                strcpy(ff[count].addr,"");
                strcpy(ff[count].ethname,ifp->ifa_name);
                // printf("Interface-Name: [%s]\n",ff[count].ethname);
                ff[count].addrtype = ifp->ifa_addr->sa_family;
                sock4  = (struct sockaddr_in *)ifp->ifa_addr;
                sock6  = (struct sockaddr_in6 *)ifp->ifa_addr;
                sockll = (struct sockaddr_ll *)ifp->ifa_addr;
                switch(ifp->ifa_addr->sa_family){
                        case AF_PACKET:
                                {
                                        int len;
                                        int j;
                                        char *ptr;
                                        ptr = ff[count].addr;
                                        len = sockll->sll_halen;
                                        for ( j = 0; j < len; j++ ){
                                                sprintf(&ptr[strlen(ptr)],"%02X:",sockll->sll_addr[j]);
                                        }
                                        if ( strlen(ptr) && ptr[strlen(ptr)-1] == ':' ) ptr[strlen(ptr)-1] = '\0';
                                }
                                break;
                        case AF_INET6:
                                sprintf(ff[count].addr,"%s",inet_ntop(AF_INET6, &(sock6->sin6_addr), addrbuf, sizeof(addrbuf)));
                                break;
                        case AF_INET:
                                sprintf(ff[count].addr,"%s",inet_ntop(AF_INET, &(sock4->sin_addr), addrbuf, sizeof(addrbuf)));
                                break;
                }
                count++;
                ifp = ifp->ifa_next;
        }
        freeifaddrs(iff);
        *_iff = ff;
        qsort(ff,count,sizeof(struct interface_config),iff_cmpfunc);
        return(count);
}



#ifndef IPV6_V6ONLY

struct gix_syscall gix_syscalls[] = { {0,NULL} };

#else

#if defined __x86_64__ && defined __LP64__
struct gix_syscall gix_syscalls[] = {
	{ SYS__sysctl ,"_sysctl"},
	{ SYS_accept ,"accept"},
	{ SYS_accept4 ,"accept4"},
	{ SYS_access ,"access"},
	{ SYS_acct ,"acct"},
	{ SYS_add_key ,"add_key"},
	{ SYS_adjtimex ,"adjtimex"},
	{ SYS_afs_syscall ,"afs_syscall"},
	{ SYS_alarm ,"alarm"},
	{ SYS_arch_prctl ,"arch_prctl"},
	{ SYS_bind ,"bind"},
#ifdef SYS_bpf
	{ SYS_bpf ,"bpf"},
#endif
	{ SYS_brk ,"brk"},
	{ SYS_capget ,"capget"},
	{ SYS_capset ,"capset"},
	{ SYS_chdir ,"chdir"},
	{ SYS_chmod ,"chmod"},
	{ SYS_chown ,"chown"},
	{ SYS_chroot ,"chroot"},
	{ SYS_clock_adjtime ,"clock_adjtime"},
	{ SYS_clock_getres ,"clock_getres"},
	{ SYS_clock_gettime ,"clock_gettime"},
	{ SYS_clock_nanosleep ,"clock_nanosleep"},
	{ SYS_clock_settime ,"clock_settime"},
	{ SYS_clone ,"clone"},
	{ SYS_close ,"close"},
	{ SYS_connect ,"connect"},
	{ SYS_creat ,"creat"},
	{ SYS_create_module ,"create_module"},
	{ SYS_delete_module ,"delete_module"},
	{ SYS_dup ,"dup"},
	{ SYS_dup2 ,"dup2"},
	{ SYS_dup3 ,"dup3"},
	{ SYS_epoll_create ,"epoll_create"},
	{ SYS_epoll_create1 ,"epoll_create1"},
	{ SYS_epoll_ctl ,"epoll_ctl"},
	{ SYS_epoll_ctl_old ,"epoll_ctl_old"},
	{ SYS_epoll_pwait ,"epoll_pwait"},
	{ SYS_epoll_wait ,"epoll_wait"},
	{ SYS_epoll_wait_old ,"epoll_wait_old"},
	{ SYS_eventfd ,"eventfd"},
	{ SYS_eventfd2 ,"eventfd2"},
	{ SYS_execve ,"execve"},
#ifdef SYS_execveat
	{ SYS_execveat ,"execveat"},
#endif
	{ SYS_exit ,"exit"},
	{ SYS_exit_group ,"exit_group"},
	{ SYS_faccessat ,"faccessat"},
	{ SYS_fadvise64 ,"fadvise64"},
	{ SYS_fallocate ,"fallocate"},
	{ SYS_fanotify_init ,"fanotify_init"},
	{ SYS_fanotify_mark ,"fanotify_mark"},
	{ SYS_fchdir ,"fchdir"},
	{ SYS_fchmod ,"fchmod"},
	{ SYS_fchmodat ,"fchmodat"},
	{ SYS_fchown ,"fchown"},
	{ SYS_fchownat ,"fchownat"},
	{ SYS_fcntl ,"fcntl"},
	{ SYS_fdatasync ,"fdatasync"},
	{ SYS_fgetxattr ,"fgetxattr"},
	{ SYS_finit_module ,"finit_module"},
	{ SYS_flistxattr ,"flistxattr"},
	{ SYS_flock ,"flock"},
	{ SYS_fork ,"fork"},
	{ SYS_fremovexattr ,"fremovexattr"},
	{ SYS_fsetxattr ,"fsetxattr"},
	{ SYS_fstat ,"fstat"},
	{ SYS_fstatfs ,"fstatfs"},
	{ SYS_fsync ,"fsync"},
	{ SYS_ftruncate ,"ftruncate"},
	{ SYS_futex ,"futex"},
	{ SYS_futimesat ,"futimesat"},
	{ SYS_get_kernel_syms ,"get_kernel_syms"},
	{ SYS_get_mempolicy ,"get_mempolicy"},
	{ SYS_get_robust_list ,"get_robust_list"},
	{ SYS_get_thread_area ,"get_thread_area"},
	{ SYS_getcpu ,"getcpu"},
	{ SYS_getcwd ,"getcwd"},
	{ SYS_getdents ,"getdents"},
	{ SYS_getdents64 ,"getdents64"},
	{ SYS_getegid ,"getegid"},
	{ SYS_geteuid ,"geteuid"},
	{ SYS_getgid ,"getgid"},
	{ SYS_getgroups ,"getgroups"},
	{ SYS_getitimer ,"getitimer"},
	{ SYS_getpeername ,"getpeername"},
	{ SYS_getpgid ,"getpgid"},
	{ SYS_getpgrp ,"getpgrp"},
	{ SYS_getpid ,"getpid"},
	{ SYS_getpmsg ,"getpmsg"},
	{ SYS_getppid ,"getppid"},
	{ SYS_getpriority ,"getpriority"},
#ifdef SYS_getrandom
	{ SYS_getrandom ,"getrandom"},
#endif
	{ SYS_getresgid ,"getresgid"},
	{ SYS_getresuid ,"getresuid"},
	{ SYS_getrlimit ,"getrlimit"},
	{ SYS_getrusage ,"getrusage"},
	{ SYS_getsid ,"getsid"},
	{ SYS_getsockname ,"getsockname"},
	{ SYS_getsockopt ,"getsockopt"},
	{ SYS_gettid ,"gettid"},
	{ SYS_gettimeofday ,"gettimeofday"},
	{ SYS_getuid ,"getuid"},
	{ SYS_getxattr ,"getxattr"},
	{ SYS_init_module ,"init_module"},
	{ SYS_inotify_add_watch ,"inotify_add_watch"},
	{ SYS_inotify_init ,"inotify_init"},
	{ SYS_inotify_init1 ,"inotify_init1"},
	{ SYS_inotify_rm_watch ,"inotify_rm_watch"},
	{ SYS_io_cancel ,"io_cancel"},
	{ SYS_io_destroy ,"io_destroy"},
	{ SYS_io_getevents ,"io_getevents"},
	{ SYS_io_setup ,"io_setup"},
	{ SYS_io_submit ,"io_submit"},
	{ SYS_ioctl ,"ioctl"},
	{ SYS_ioperm ,"ioperm"},
	{ SYS_iopl ,"iopl"},
	{ SYS_ioprio_get ,"ioprio_get"},
	{ SYS_ioprio_set ,"ioprio_set"},
	{ SYS_kcmp ,"kcmp"},
#ifdef SYS_kexec_file_load
	{ SYS_kexec_file_load ,"kexec_file_load"},
#endif 
	{ SYS_kexec_load ,"kexec_load"},
	{ SYS_keyctl ,"keyctl"},
	{ SYS_kill ,"kill"},
	{ SYS_lchown ,"lchown"},
	{ SYS_lgetxattr ,"lgetxattr"},
	{ SYS_link ,"link"},
	{ SYS_linkat ,"linkat"},
	{ SYS_listen ,"listen"},
	{ SYS_listxattr ,"listxattr"},
	{ SYS_llistxattr ,"llistxattr"},
	{ SYS_lookup_dcookie ,"lookup_dcookie"},
	{ SYS_lremovexattr ,"lremovexattr"},
	{ SYS_lseek ,"lseek"},
	{ SYS_lsetxattr ,"lsetxattr"},
	{ SYS_lstat ,"lstat"},
	{ SYS_madvise ,"madvise"},
	{ SYS_mbind ,"mbind"},
#ifdef SYS_membarrier
	{ SYS_membarrier ,"membarrier"},
#endif
#ifdef SYS_memfd_create
	{ SYS_memfd_create ,"memfd_create"},
#endif
	{ SYS_migrate_pages ,"migrate_pages"},
	{ SYS_mincore ,"mincore"},
	{ SYS_mkdir ,"mkdir"},
	{ SYS_mkdirat ,"mkdirat"},
	{ SYS_mknod ,"mknod"},
	{ SYS_mknodat ,"mknodat"},
	{ SYS_mlock ,"mlock"},
#ifdef SYS_mlock2
	{ SYS_mlock2 ,"mlock2"},
#endif
	{ SYS_mlockall ,"mlockall"},
	{ SYS_mmap ,"mmap"},
	{ SYS_modify_ldt ,"modify_ldt"},
	{ SYS_mount ,"mount"},
	{ SYS_move_pages ,"move_pages"},
	{ SYS_mprotect ,"mprotect"},
	{ SYS_mq_getsetattr ,"mq_getsetattr"},
	{ SYS_mq_notify ,"mq_notify"},
	{ SYS_mq_open ,"mq_open"},
	{ SYS_mq_timedreceive ,"mq_timedreceive"},
	{ SYS_mq_timedsend ,"mq_timedsend"},
	{ SYS_mq_unlink ,"mq_unlink"},
	{ SYS_mremap ,"mremap"},
	{ SYS_msgctl ,"msgctl"},
	{ SYS_msgget ,"msgget"},
	{ SYS_msgrcv ,"msgrcv"},
	{ SYS_msgsnd ,"msgsnd"},
	{ SYS_msync ,"msync"},
	{ SYS_munlock ,"munlock"},
	{ SYS_munlockall ,"munlockall"},
	{ SYS_munmap ,"munmap"},
	{ SYS_name_to_handle_at ,"name_to_handle_at"},
	{ SYS_nanosleep ,"nanosleep"},
	{ SYS_newfstatat ,"newfstatat"},
	{ SYS_nfsservctl ,"nfsservctl"},
	{ SYS_open ,"open"},
	{ SYS_open_by_handle_at ,"open_by_handle_at"},
	{ SYS_openat ,"openat"},
	{ SYS_pause ,"pause"},
	{ SYS_perf_event_open ,"perf_event_open"},
	{ SYS_personality ,"personality"},
	{ SYS_pipe ,"pipe"},
	{ SYS_pipe2 ,"pipe2"},
	{ SYS_pivot_root ,"pivot_root"},
	{ SYS_poll ,"poll"},
	{ SYS_ppoll ,"ppoll"},
	{ SYS_prctl ,"prctl"},
	{ SYS_pread64 ,"pread64"},
	{ SYS_preadv ,"preadv"},
	{ SYS_prlimit64 ,"prlimit64"},
	{ SYS_process_vm_readv ,"process_vm_readv"},
	{ SYS_process_vm_writev ,"process_vm_writev"},
	{ SYS_pselect6 ,"pselect6"},
	{ SYS_ptrace ,"ptrace"},
	{ SYS_putpmsg ,"putpmsg"},
	{ SYS_pwrite64 ,"pwrite64"},
	{ SYS_pwritev ,"pwritev"},
	{ SYS_query_module ,"query_module"},
	{ SYS_quotactl ,"quotactl"},
	{ SYS_read ,"read"},
	{ SYS_readahead ,"readahead"},
	{ SYS_readlink ,"readlink"},
	{ SYS_readlinkat ,"readlinkat"},
	{ SYS_readv ,"readv"},
	{ SYS_reboot ,"reboot"},
	{ SYS_recvfrom ,"recvfrom"},
	{ SYS_recvmmsg ,"recvmmsg"},
	{ SYS_recvmsg ,"recvmsg"},
	{ SYS_remap_file_pages ,"remap_file_pages"},
	{ SYS_removexattr ,"removexattr"},
	{ SYS_rename ,"rename"},
	{ SYS_renameat ,"renameat"},
#ifdef SYS_renameat2
	{ SYS_renameat2 ,"renameat2"},
#endif
	{ SYS_request_key ,"request_key"},
	{ SYS_restart_syscall ,"restart_syscall"},
	{ SYS_rmdir ,"rmdir"},
	{ SYS_rt_sigaction ,"rt_sigaction"},
	{ SYS_rt_sigpending ,"rt_sigpending"},
	{ SYS_rt_sigprocmask ,"rt_sigprocmask"},
	{ SYS_rt_sigqueueinfo ,"rt_sigqueueinfo"},
	{ SYS_rt_sigreturn ,"rt_sigreturn"},
	{ SYS_rt_sigsuspend ,"rt_sigsuspend"},
	{ SYS_rt_sigtimedwait ,"rt_sigtimedwait"},
	{ SYS_rt_tgsigqueueinfo ,"rt_tgsigqueueinfo"},
	{ SYS_sched_get_priority_max ,"sched_get_priority_max"},
	{ SYS_sched_get_priority_min ,"sched_get_priority_min"},
	{ SYS_sched_getaffinity ,"sched_getaffinity"},
#ifdef SYS_sched_getattr
	{ SYS_sched_getattr ,"sched_getattr"},
#endif
	{ SYS_sched_getparam ,"sched_getparam"},
	{ SYS_sched_getscheduler ,"sched_getscheduler"},
	{ SYS_sched_rr_get_interval ,"sched_rr_get_interval"},
	{ SYS_sched_setaffinity ,"sched_setaffinity"},
#ifdef SYS_sched_setattr
	{ SYS_sched_setattr ,"sched_setattr"},
#endif
	{ SYS_sched_setparam ,"sched_setparam"},
	{ SYS_sched_setscheduler ,"sched_setscheduler"},
	{ SYS_sched_yield ,"sched_yield"},
#ifdef SYS_seccomp
	{ SYS_seccomp ,"seccomp"},
#endif
	{ SYS_security ,"security"},
	{ SYS_select ,"select"},
	{ SYS_semctl ,"semctl"},
	{ SYS_semget ,"semget"},
	{ SYS_semop ,"semop"},
	{ SYS_semtimedop ,"semtimedop"},
	{ SYS_sendfile ,"sendfile"},
	{ SYS_sendmmsg ,"sendmmsg"},
	{ SYS_sendmsg ,"sendmsg"},
	{ SYS_sendto ,"sendto"},
	{ SYS_set_mempolicy ,"set_mempolicy"},
	{ SYS_set_robust_list ,"set_robust_list"},
	{ SYS_set_thread_area ,"set_thread_area"},
	{ SYS_set_tid_address ,"set_tid_address"},
	{ SYS_setdomainname ,"setdomainname"},
	{ SYS_setfsgid ,"setfsgid"},
	{ SYS_setfsuid ,"setfsuid"},
	{ SYS_setgid ,"setgid"},
	{ SYS_setgroups ,"setgroups"},
	{ SYS_sethostname ,"sethostname"},
	{ SYS_setitimer ,"setitimer"},
	{ SYS_setns ,"setns"},
	{ SYS_setpgid ,"setpgid"},
	{ SYS_setpriority ,"setpriority"},
	{ SYS_setregid ,"setregid"},
	{ SYS_setresgid ,"setresgid"},
	{ SYS_setresuid ,"setresuid"},
	{ SYS_setreuid ,"setreuid"},
	{ SYS_setrlimit ,"setrlimit"},
	{ SYS_setsid ,"setsid"},
	{ SYS_setsockopt ,"setsockopt"},
	{ SYS_settimeofday ,"settimeofday"},
	{ SYS_setuid ,"setuid"},
	{ SYS_setxattr ,"setxattr"},
	{ SYS_shmat ,"shmat"},
	{ SYS_shmctl ,"shmctl"},
	{ SYS_shmdt ,"shmdt"},
	{ SYS_shmget ,"shmget"},
	{ SYS_shutdown ,"shutdown"},
	{ SYS_sigaltstack ,"sigaltstack"},
	{ SYS_signalfd ,"signalfd"},
	{ SYS_signalfd4 ,"signalfd4"},
	{ SYS_socket ,"socket"},
	{ SYS_socketpair ,"socketpair"},
	{ SYS_splice ,"splice"},
	{ SYS_stat ,"stat"},
	{ SYS_statfs ,"statfs"},
	{ SYS_swapoff ,"swapoff"},
	{ SYS_swapon ,"swapon"},
	{ SYS_symlink ,"symlink"},
	{ SYS_symlinkat ,"symlinkat"},
	{ SYS_sync ,"sync"},
	{ SYS_sync_file_range ,"sync_file_range"},
	{ SYS_syncfs ,"syncfs"},
	{ SYS_sysfs ,"sysfs"},
	{ SYS_sysinfo ,"sysinfo"},
	{ SYS_syslog ,"syslog"},
	{ SYS_tee ,"tee"},
	{ SYS_tgkill ,"tgkill"},
	{ SYS_time ,"time"},
	{ SYS_timer_create ,"timer_create"},
	{ SYS_timer_delete ,"timer_delete"},
	{ SYS_timer_getoverrun ,"timer_getoverrun"},
	{ SYS_timer_gettime ,"timer_gettime"},
	{ SYS_timer_settime ,"timer_settime"},
	{ SYS_timerfd_create ,"timerfd_create"},
	{ SYS_timerfd_gettime ,"timerfd_gettime"},
	{ SYS_timerfd_settime ,"timerfd_settime"},
	{ SYS_times ,"times"},
	{ SYS_tkill ,"tkill"},
	{ SYS_truncate ,"truncate"},
	{ SYS_tuxcall ,"tuxcall"},
	{ SYS_umask ,"umask"},
	{ SYS_umount2 ,"umount2"},
	{ SYS_uname ,"uname"},
	{ SYS_unlink ,"unlink"},
	{ SYS_unlinkat ,"unlinkat"},
	{ SYS_unshare ,"unshare"},
	{ SYS_uselib ,"uselib"},
#ifdef SYS_userfaultfd
	{ SYS_userfaultfd ,"userfaultfd"},
#endif
	{ SYS_ustat ,"ustat"},
	{ SYS_utime ,"utime"},
	{ SYS_utimensat ,"utimensat"},
	{ SYS_utimes ,"utimes"},
	{ SYS_vfork ,"vfork"},
	{ SYS_vhangup ,"vhangup"},
	{ SYS_vmsplice ,"vmsplice"},
	{ SYS_vserver ,"vserver"},
	{ SYS_wait4 ,"wait4"},
	{ SYS_waitid ,"waitid"},
	{ SYS_write ,"write"},
	{ SYS_writev ,"writev"}
};
#endif
#if defined __x86_64__ && defined __ILP32__
struct gix_syscall gix_syscalls[] = {
	{ SYS_accept ,"accept"},
	{ SYS_accept4 ,"accept4"},
	{ SYS_access ,"access"},
	{ SYS_acct ,"acct"},
	{ SYS_add_key ,"add_key"},
	{ SYS_adjtimex ,"adjtimex"},
	{ SYS_afs_syscall ,"afs_syscall"},
	{ SYS_alarm ,"alarm"},
	{ SYS_arch_prctl ,"arch_prctl"},
	{ SYS_bind ,"bind"},
	{ SYS_bpf ,"bpf"},
	{ SYS_brk ,"brk"},
	{ SYS_capget ,"capget"},
	{ SYS_capset ,"capset"},
	{ SYS_chdir ,"chdir"},
	{ SYS_chmod ,"chmod"},
	{ SYS_chown ,"chown"},
	{ SYS_chroot ,"chroot"},
	{ SYS_clock_adjtime ,"clock_adjtime"},
	{ SYS_clock_getres ,"clock_getres"},
	{ SYS_clock_gettime ,"clock_gettime"},
	{ SYS_clock_nanosleep ,"clock_nanosleep"},
	{ SYS_clock_settime ,"clock_settime"},
	{ SYS_clone ,"clone"},
	{ SYS_close ,"close"},
	{ SYS_connect ,"connect"},
	{ SYS_creat ,"creat"},
	{ SYS_delete_module ,"delete_module"},
	{ SYS_dup ,"dup"},
	{ SYS_dup2 ,"dup2"},
	{ SYS_dup3 ,"dup3"},
	{ SYS_epoll_create ,"epoll_create"},
	{ SYS_epoll_create1 ,"epoll_create1"},
	{ SYS_epoll_ctl ,"epoll_ctl"},
	{ SYS_epoll_pwait ,"epoll_pwait"},
	{ SYS_epoll_wait ,"epoll_wait"},
	{ SYS_eventfd ,"eventfd"},
	{ SYS_eventfd2 ,"eventfd2"},
	{ SYS_execve ,"execve"},
	{ SYS_execveat ,"execveat"},
	{ SYS_exit ,"exit"},
	{ SYS_exit_group ,"exit_group"},
	{ SYS_faccessat ,"faccessat"},
	{ SYS_fadvise64 ,"fadvise64"},
	{ SYS_fallocate ,"fallocate"},
	{ SYS_fanotify_init ,"fanotify_init"},
	{ SYS_fanotify_mark ,"fanotify_mark"},
	{ SYS_fchdir ,"fchdir"},
	{ SYS_fchmod ,"fchmod"},
	{ SYS_fchmodat ,"fchmodat"},
	{ SYS_fchown ,"fchown"},
	{ SYS_fchownat ,"fchownat"},
	{ SYS_fcntl ,"fcntl"},
	{ SYS_fdatasync ,"fdatasync"},
	{ SYS_fgetxattr ,"fgetxattr"},
	{ SYS_finit_module ,"finit_module"},
	{ SYS_flistxattr ,"flistxattr"},
	{ SYS_flock ,"flock"},
	{ SYS_fork ,"fork"},
	{ SYS_fremovexattr ,"fremovexattr"},
	{ SYS_fsetxattr ,"fsetxattr"},
	{ SYS_fstat ,"fstat"},
	{ SYS_fstatfs ,"fstatfs"},
	{ SYS_fsync ,"fsync"},
	{ SYS_ftruncate ,"ftruncate"},
	{ SYS_futex ,"futex"},
	{ SYS_futimesat ,"futimesat"},
	{ SYS_get_mempolicy ,"get_mempolicy"},
	{ SYS_get_robust_list ,"get_robust_list"},
	{ SYS_getcpu ,"getcpu"},
	{ SYS_getcwd ,"getcwd"},
	{ SYS_getdents ,"getdents"},
	{ SYS_getdents64 ,"getdents64"},
	{ SYS_getegid ,"getegid"},
	{ SYS_geteuid ,"geteuid"},
	{ SYS_getgid ,"getgid"},
	{ SYS_getgroups ,"getgroups"},
	{ SYS_getitimer ,"getitimer"},
	{ SYS_getpeername ,"getpeername"},
	{ SYS_getpgid ,"getpgid"},
	{ SYS_getpgrp ,"getpgrp"},
	{ SYS_getpid ,"getpid"},
	{ SYS_getpmsg ,"getpmsg"},
	{ SYS_getppid ,"getppid"},
	{ SYS_getpriority ,"getpriority"},
	{ SYS_getrandom ,"getrandom"},
	{ SYS_getresgid ,"getresgid"},
	{ SYS_getresuid ,"getresuid"},
	{ SYS_getrlimit ,"getrlimit"},
	{ SYS_getrusage ,"getrusage"},
	{ SYS_getsid ,"getsid"},
	{ SYS_getsockname ,"getsockname"},
	{ SYS_getsockopt ,"getsockopt"},
	{ SYS_gettid ,"gettid"},
	{ SYS_gettimeofday ,"gettimeofday"},
	{ SYS_getuid ,"getuid"},
	{ SYS_getxattr ,"getxattr"},
	{ SYS_init_module ,"init_module"},
	{ SYS_inotify_add_watch ,"inotify_add_watch"},
	{ SYS_inotify_init ,"inotify_init"},
	{ SYS_inotify_init1 ,"inotify_init1"},
	{ SYS_inotify_rm_watch ,"inotify_rm_watch"},
	{ SYS_io_cancel ,"io_cancel"},
	{ SYS_io_destroy ,"io_destroy"},
	{ SYS_io_getevents ,"io_getevents"},
	{ SYS_io_setup ,"io_setup"},
	{ SYS_io_submit ,"io_submit"},
	{ SYS_ioctl ,"ioctl"},
	{ SYS_ioperm ,"ioperm"},
	{ SYS_iopl ,"iopl"},
	{ SYS_ioprio_get ,"ioprio_get"},
	{ SYS_ioprio_set ,"ioprio_set"},
	{ SYS_kcmp ,"kcmp"},
	{ SYS_kexec_file_load ,"kexec_file_load"},
	{ SYS_kexec_load ,"kexec_load"},
	{ SYS_keyctl ,"keyctl"},
	{ SYS_kill ,"kill"},
	{ SYS_lchown ,"lchown"},
	{ SYS_lgetxattr ,"lgetxattr"},
	{ SYS_link ,"link"},
	{ SYS_linkat ,"linkat"},
	{ SYS_listen ,"listen"},
	{ SYS_listxattr ,"listxattr"},
	{ SYS_llistxattr ,"llistxattr"},
	{ SYS_lookup_dcookie ,"lookup_dcookie"},
	{ SYS_lremovexattr ,"lremovexattr"},
	{ SYS_lseek ,"lseek"},
	{ SYS_lsetxattr ,"lsetxattr"},
	{ SYS_lstat ,"lstat"},
	{ SYS_madvise ,"madvise"},
	{ SYS_mbind ,"mbind"},
	{ SYS_membarrier ,"membarrier"},
	{ SYS_memfd_create ,"memfd_create"},
	{ SYS_migrate_pages ,"migrate_pages"},
	{ SYS_mincore ,"mincore"},
	{ SYS_mkdir ,"mkdir"},
	{ SYS_mkdirat ,"mkdirat"},
	{ SYS_mknod ,"mknod"},
	{ SYS_mknodat ,"mknodat"},
	{ SYS_mlock ,"mlock"},
	{ SYS_mlock2 ,"mlock2"},
	{ SYS_mlockall ,"mlockall"},
	{ SYS_mmap ,"mmap"},
	{ SYS_modify_ldt ,"modify_ldt"},
	{ SYS_mount ,"mount"},
	{ SYS_move_pages ,"move_pages"},
	{ SYS_mprotect ,"mprotect"},
	{ SYS_mq_getsetattr ,"mq_getsetattr"},
	{ SYS_mq_notify ,"mq_notify"},
	{ SYS_mq_open ,"mq_open"},
	{ SYS_mq_timedreceive ,"mq_timedreceive"},
	{ SYS_mq_timedsend ,"mq_timedsend"},
	{ SYS_mq_unlink ,"mq_unlink"},
	{ SYS_mremap ,"mremap"},
	{ SYS_msgctl ,"msgctl"},
	{ SYS_msgget ,"msgget"},
	{ SYS_msgrcv ,"msgrcv"},
	{ SYS_msgsnd ,"msgsnd"},
	{ SYS_msync ,"msync"},
	{ SYS_munlock ,"munlock"},
	{ SYS_munlockall ,"munlockall"},
	{ SYS_munmap ,"munmap"},
	{ SYS_name_to_handle_at ,"name_to_handle_at"},
	{ SYS_nanosleep ,"nanosleep"},
	{ SYS_newfstatat ,"newfstatat"},
	{ SYS_open ,"open"},
	{ SYS_open_by_handle_at ,"open_by_handle_at"},
	{ SYS_openat ,"openat"},
	{ SYS_pause ,"pause"},
	{ SYS_perf_event_open ,"perf_event_open"},
	{ SYS_personality ,"personality"},
	{ SYS_pipe ,"pipe"},
	{ SYS_pipe2 ,"pipe2"},
	{ SYS_pivot_root ,"pivot_root"},
	{ SYS_poll ,"poll"},
	{ SYS_ppoll ,"ppoll"},
	{ SYS_prctl ,"prctl"},
	{ SYS_pread64 ,"pread64"},
	{ SYS_preadv ,"preadv"},
	{ SYS_prlimit64 ,"prlimit64"},
	{ SYS_process_vm_readv ,"process_vm_readv"},
	{ SYS_process_vm_writev ,"process_vm_writev"},
	{ SYS_pselect6 ,"pselect6"},
	{ SYS_ptrace ,"ptrace"},
	{ SYS_putpmsg ,"putpmsg"},
	{ SYS_pwrite64 ,"pwrite64"},
	{ SYS_pwritev ,"pwritev"},
	{ SYS_quotactl ,"quotactl"},
	{ SYS_read ,"read"},
	{ SYS_readahead ,"readahead"},
	{ SYS_readlink ,"readlink"},
	{ SYS_readlinkat ,"readlinkat"},
	{ SYS_readv ,"readv"},
	{ SYS_reboot ,"reboot"},
	{ SYS_recvfrom ,"recvfrom"},
	{ SYS_recvmmsg ,"recvmmsg"},
	{ SYS_recvmsg ,"recvmsg"},
	{ SYS_remap_file_pages ,"remap_file_pages"},
	{ SYS_removexattr ,"removexattr"},
	{ SYS_rename ,"rename"},
	{ SYS_renameat ,"renameat"},
	{ SYS_renameat2 ,"renameat2"},
	{ SYS_request_key ,"request_key"},
	{ SYS_restart_syscall ,"restart_syscall"},
	{ SYS_rmdir ,"rmdir"},
	{ SYS_rt_sigaction ,"rt_sigaction"},
	{ SYS_rt_sigpending ,"rt_sigpending"},
	{ SYS_rt_sigprocmask ,"rt_sigprocmask"},
	{ SYS_rt_sigqueueinfo ,"rt_sigqueueinfo"},
	{ SYS_rt_sigreturn ,"rt_sigreturn"},
	{ SYS_rt_sigsuspend ,"rt_sigsuspend"},
	{ SYS_rt_sigtimedwait ,"rt_sigtimedwait"},
	{ SYS_rt_tgsigqueueinfo ,"rt_tgsigqueueinfo"},
	{ SYS_sched_get_priority_max ,"sched_get_priority_max"},
	{ SYS_sched_get_priority_min ,"sched_get_priority_min"},
	{ SYS_sched_getaffinity ,"sched_getaffinity"},
	{ SYS_sched_getattr ,"sched_getattr"},
	{ SYS_sched_getparam ,"sched_getparam"},
	{ SYS_sched_getscheduler ,"sched_getscheduler"},
	{ SYS_sched_rr_get_interval ,"sched_rr_get_interval"},
	{ SYS_sched_setaffinity ,"sched_setaffinity"},
	{ SYS_sched_setattr ,"sched_setattr"},
	{ SYS_sched_setparam ,"sched_setparam"},
	{ SYS_sched_setscheduler ,"sched_setscheduler"},
	{ SYS_sched_yield ,"sched_yield"},
	{ SYS_seccomp ,"seccomp"},
	{ SYS_security ,"security"},
	{ SYS_select ,"select"},
	{ SYS_semctl ,"semctl"},
	{ SYS_semget ,"semget"},
	{ SYS_semop ,"semop"},
	{ SYS_semtimedop ,"semtimedop"},
	{ SYS_sendfile ,"sendfile"},
	{ SYS_sendmmsg ,"sendmmsg"},
	{ SYS_sendmsg ,"sendmsg"},
	{ SYS_sendto ,"sendto"},
	{ SYS_set_mempolicy ,"set_mempolicy"},
	{ SYS_set_robust_list ,"set_robust_list"},
	{ SYS_set_tid_address ,"set_tid_address"},
	{ SYS_setdomainname ,"setdomainname"},
	{ SYS_setfsgid ,"setfsgid"},
	{ SYS_setfsuid ,"setfsuid"},
	{ SYS_setgid ,"setgid"},
	{ SYS_setgroups ,"setgroups"},
	{ SYS_sethostname ,"sethostname"},
	{ SYS_setitimer ,"setitimer"},
	{ SYS_setns ,"setns"},
	{ SYS_setpgid ,"setpgid"},
	{ SYS_setpriority ,"setpriority"},
	{ SYS_setregid ,"setregid"},
	{ SYS_setresgid ,"setresgid"},
	{ SYS_setresuid ,"setresuid"},
	{ SYS_setreuid ,"setreuid"},
	{ SYS_setrlimit ,"setrlimit"},
	{ SYS_setsid ,"setsid"},
	{ SYS_setsockopt ,"setsockopt"},
	{ SYS_settimeofday ,"settimeofday"},
	{ SYS_setuid ,"setuid"},
	{ SYS_setxattr ,"setxattr"},
	{ SYS_shmat ,"shmat"},
	{ SYS_shmctl ,"shmctl"},
	{ SYS_shmdt ,"shmdt"},
	{ SYS_shmget ,"shmget"},
	{ SYS_shutdown ,"shutdown"},
	{ SYS_sigaltstack ,"sigaltstack"},
	{ SYS_signalfd ,"signalfd"},
	{ SYS_signalfd4 ,"signalfd4"},
	{ SYS_socket ,"socket"},
	{ SYS_socketpair ,"socketpair"},
	{ SYS_splice ,"splice"},
	{ SYS_stat ,"stat"},
	{ SYS_statfs ,"statfs"},
	{ SYS_swapoff ,"swapoff"},
	{ SYS_swapon ,"swapon"},
	{ SYS_symlink ,"symlink"},
	{ SYS_symlinkat ,"symlinkat"},
	{ SYS_sync ,"sync"},
	{ SYS_sync_file_range ,"sync_file_range"},
	{ SYS_syncfs ,"syncfs"},
	{ SYS_sysfs ,"sysfs"},
	{ SYS_sysinfo ,"sysinfo"},
	{ SYS_syslog ,"syslog"},
	{ SYS_tee ,"tee"},
	{ SYS_tgkill ,"tgkill"},
	{ SYS_time ,"time"},
	{ SYS_timer_create ,"timer_create"},
	{ SYS_timer_delete ,"timer_delete"},
	{ SYS_timer_getoverrun ,"timer_getoverrun"},
	{ SYS_timer_gettime ,"timer_gettime"},
	{ SYS_timer_settime ,"timer_settime"},
	{ SYS_timerfd_create ,"timerfd_create"},
	{ SYS_timerfd_gettime ,"timerfd_gettime"},
	{ SYS_timerfd_settime ,"timerfd_settime"},
	{ SYS_times ,"times"},
	{ SYS_tkill ,"tkill"},
	{ SYS_truncate ,"truncate"},
	{ SYS_tuxcall ,"tuxcall"},
	{ SYS_umask ,"umask"},
	{ SYS_umount2 ,"umount2"},
	{ SYS_uname ,"uname"},
	{ SYS_unlink ,"unlink"},
	{ SYS_unlinkat ,"unlinkat"},
	{ SYS_unshare ,"unshare"},
	{ SYS_userfaultfd ,"userfaultfd"},
	{ SYS_ustat ,"ustat"},
	{ SYS_utime ,"utime"},
	{ SYS_utimensat ,"utimensat"},
	{ SYS_utimes ,"utimes"},
	{ SYS_vfork ,"vfork"},
	{ SYS_vhangup ,"vhangup"},
	{ SYS_vmsplice ,"vmsplice"},
	{ SYS_wait4 ,"wait4"},
	{ SYS_waitid ,"waitid"},
	{ SYS_write ,"write"},
	{ SYS_writev ,"writev"}
};
#endif

#if !defined __x86_64__ 
struct gix_syscall gix_syscalls[] = {
	{ SYS__llseek ,"_llseek"},
	{ SYS__newselect ,"_newselect"},
	{ SYS__sysctl ,"_sysctl"},
#ifdef SYS_accept4
	{ SYS_accept4 ,"accept4"},
#endif
#ifdef __NR_accept4
	{ __NR_accept4 ,"accept4"},
#endif
	{ SYS_access ,"access"},
	{ SYS_acct ,"acct"},
	{ SYS_add_key ,"add_key"},
	{ SYS_adjtimex ,"adjtimex"},
	{ SYS_afs_syscall ,"afs_syscall"},
	{ SYS_alarm ,"alarm"},
	{ SYS_bdflush ,"bdflush"},
#ifdef SYS_bind
	{ SYS_bind ,"bind"},
#endif
#ifdef __NR_bind
	{ __NR_bind ,"bind"},
#endif
#ifdef SYS_bpf
	{ SYS_bpf ,"bpf"},
#else
#endif
	{ SYS_break ,"break"},
	{ SYS_brk ,"brk"},
	{ SYS_capget ,"capget"},
	{ SYS_capset ,"capset"},
	{ SYS_chdir ,"chdir"},
	{ SYS_chmod ,"chmod"},
	{ SYS_chown ,"chown"},
	{ SYS_chown32 ,"chown32"},
	{ SYS_chroot ,"chroot"},
#ifdef SYS_clock_adjtime
	{ SYS_clock_adjtime ,"clock_adjtime"},
#else
#endif
	{ SYS_clock_getres ,"clock_getres"},
	{ SYS_clock_gettime ,"clock_gettime"},
	{ SYS_clock_nanosleep ,"clock_nanosleep"},
	{ SYS_clock_settime ,"clock_settime"},
	{ SYS_clone ,"clone"},
	{ SYS_close ,"close"},
#ifdef SYS_connect
	{ SYS_connect ,"connect"},
#endif
#ifdef __NR_connect
	{ __NR_connect ,"connect"},
#endif
	{ SYS_creat ,"creat"},
	{ SYS_create_module ,"create_module"},
	{ SYS_delete_module ,"delete_module"},
	{ SYS_dup ,"dup"},
	{ SYS_dup2 ,"dup2"},
#ifdef SYS_dup3
	{ SYS_dup3 ,"dup3"},
#endif
	{ SYS_epoll_create ,"epoll_create"},
#ifdef SYS_epoll_create1
	{ SYS_epoll_create1 ,"epoll_create1"},
#endif
	{ SYS_epoll_ctl ,"epoll_ctl"},
	{ SYS_epoll_pwait ,"epoll_pwait"},
	{ SYS_epoll_wait ,"epoll_wait"},
#ifdef SYS_eventfd
	{ SYS_eventfd ,"eventfd"},
#endif
#ifdef SYS_eventfd
	{ SYS_eventfd2 ,"eventfd2"},
#endif
	{ SYS_execve ,"execve"},
#ifdef SYS_execveat
	{ SYS_execveat ,"execveat"},
#endif
#ifdef __NR_execveat
	{ __NR_execveat ,"execveat"},
#endif
	{ SYS_exit ,"exit"},
	{ SYS_exit_group ,"exit_group"},
	{ SYS_faccessat ,"faccessat"},
	{ SYS_fadvise64 ,"fadvise64"},
	{ SYS_fadvise64_64 ,"fadvise64_64"},
#ifdef SYS_fallocate
	{ SYS_fallocate ,"fallocate"},
#endif
#ifdef SYS_fanotify_init
	{ SYS_fanotify_init ,"fanotify_init"},
#endif
#ifdef __NR_fanotify_init
	{ __NR_fanotify_init ,"fanotify_init"},
#endif
#ifdef SYS_fanotify_mark
	{ SYS_fanotify_mark ,"fanotify_mark"},
#endif
#ifdef __NR_fanotify_mark
	{ __NR_fanotify_mark ,"fanotify_mark"},
#endif
	{ SYS_fchdir ,"fchdir"},
	{ SYS_fchmod ,"fchmod"},
	{ SYS_fchmodat ,"fchmodat"},
	{ SYS_fchown ,"fchown"},
	{ SYS_fchown32 ,"fchown32"},
	{ SYS_fchownat ,"fchownat"},
	{ SYS_fcntl ,"fcntl"},
	{ SYS_fcntl64 ,"fcntl64"},
	{ SYS_fdatasync ,"fdatasync"},
	{ SYS_fgetxattr ,"fgetxattr"},
#ifdef SYS_finit_module
	{ SYS_finit_module ,"finit_module"},
#endif
#ifdef __NR_finit_module
	{ __NR_finit_module ,"finit_module"},
#endif
	{ SYS_flistxattr ,"flistxattr"},
	{ SYS_flock ,"flock"},
	{ SYS_fork ,"fork"},
	{ SYS_fremovexattr ,"fremovexattr"},
	{ SYS_fsetxattr ,"fsetxattr"},
	{ SYS_fstat ,"fstat"},
	{ SYS_fstat64 ,"fstat64"},
	{ SYS_fstatat64 ,"fstatat64"},
	{ SYS_fstatfs ,"fstatfs"},
	{ SYS_fstatfs64 ,"fstatfs64"},
	{ SYS_fsync ,"fsync"},
	{ SYS_ftime ,"ftime"},
	{ SYS_ftruncate ,"ftruncate"},
	{ SYS_ftruncate64 ,"ftruncate64"},
	{ SYS_futex ,"futex"},
	{ SYS_futimesat ,"futimesat"},
	{ SYS_get_kernel_syms ,"get_kernel_syms"},
	{ SYS_get_mempolicy ,"get_mempolicy"},
	{ SYS_get_robust_list ,"get_robust_list"},
	{ SYS_get_thread_area ,"get_thread_area"},
	{ SYS_getcpu ,"getcpu"},
	{ SYS_getcwd ,"getcwd"},
	{ SYS_getdents ,"getdents"},
	{ SYS_getdents64 ,"getdents64"},
	{ SYS_getegid ,"getegid"},
	{ SYS_getegid32 ,"getegid32"},
	{ SYS_geteuid ,"geteuid"},
	{ SYS_geteuid32 ,"geteuid32"},
	{ SYS_getgid ,"getgid"},
	{ SYS_getgid32 ,"getgid32"},
	{ SYS_getgroups ,"getgroups"},
	{ SYS_getgroups32 ,"getgroups32"},
	{ SYS_getitimer ,"getitimer"},
#ifdef SYS_getpeername
	{ SYS_getpeername ,"getpeername"},
#endif
#ifdef __NR_getpeername
	{ __NR_getpeername ,"getpeername"},
#endif
	{ SYS_getpgid ,"getpgid"},
	{ SYS_getpgrp ,"getpgrp"},
	{ SYS_getpid ,"getpid"},
	{ SYS_getpmsg ,"getpmsg"},
	{ SYS_getppid ,"getppid"},
	{ SYS_getpriority ,"getpriority"},
#ifdef SYS_getrandom
	{ SYS_getrandom ,"getrandom"},
#endif
#ifdef __NR_getrandom
	{ __NR_getrandom ,"getrandom"},
#endif
	{ SYS_getresgid ,"getresgid"},
	{ SYS_getresgid32 ,"getresgid32"},
	{ SYS_getresuid ,"getresuid"},
	{ SYS_getresuid32 ,"getresuid32"},
	{ SYS_getrlimit ,"getrlimit"},
	{ SYS_getrusage ,"getrusage"},
	{ SYS_getsid ,"getsid"},
#ifdef SYS_getsockname
	{ SYS_getsockname ,"getsockname"},
#endif
#ifdef __NR_getsockname
	{ __NR_getsockname ,"getsockname"},
#endif
#ifdef SYS_getsockopt
	{ SYS_getsockopt ,"getsockopt"},
#endif
#ifdef __NR_getsockopt
	{ __NR_getsockopt ,"getsockopt"},
#endif
	{ SYS_gettid ,"gettid"},
	{ SYS_gettimeofday ,"gettimeofday"},
	{ SYS_getuid ,"getuid"},
	{ SYS_getuid32 ,"getuid32"},
	{ SYS_getxattr ,"getxattr"},
	{ SYS_gtty ,"gtty"},
	{ SYS_idle ,"idle"},
	{ SYS_init_module ,"init_module"},
	{ SYS_inotify_add_watch ,"inotify_add_watch"},
	{ SYS_inotify_init ,"inotify_init"},
#ifdef SYS_inotify_init1
	{ SYS_inotify_init1 ,"inotify_init1"},
#endif
	{ SYS_inotify_rm_watch ,"inotify_rm_watch"},
	{ SYS_io_cancel ,"io_cancel"},
	{ SYS_io_destroy ,"io_destroy"},
	{ SYS_io_getevents ,"io_getevents"},
	{ SYS_io_setup ,"io_setup"},
	{ SYS_io_submit ,"io_submit"},
	{ SYS_ioctl ,"ioctl"},
	{ SYS_ioperm ,"ioperm"},
	{ SYS_iopl ,"iopl"},
	{ SYS_ioprio_get ,"ioprio_get"},
	{ SYS_ioprio_set ,"ioprio_set"},
	{ SYS_ipc ,"ipc"},
#ifdef SYS_kcmp
	{ SYS_kcmp ,"kcmp"},
#endif
#ifdef __NR_kcmp
	{ __NR_kcmp ,"kcmp"},
#endif
	{ SYS_kexec_load ,"kexec_load"},
	{ SYS_keyctl ,"keyctl"},
	{ SYS_kill ,"kill"},
	{ SYS_lchown ,"lchown"},
	{ SYS_lchown32 ,"lchown32"},
	{ SYS_lgetxattr ,"lgetxattr"},
	{ SYS_link ,"link"},
	{ SYS_linkat ,"linkat"},
#ifdef SYS_listen
	{ SYS_listen ,"listen"},
#endif
#ifdef __NR_listen
	{ __NR_listen ,"listen"},
#endif
	{ SYS_listxattr ,"listxattr"},
	{ SYS_llistxattr ,"llistxattr"},
	{ SYS_lock ,"lock"},
	{ SYS_lookup_dcookie ,"lookup_dcookie"},
	{ SYS_lremovexattr ,"lremovexattr"},
	{ SYS_lseek ,"lseek"},
	{ SYS_lsetxattr ,"lsetxattr"},
	{ SYS_lstat ,"lstat"},
	{ SYS_lstat64 ,"lstat64"},
	{ SYS_madvise ,"madvise"},
	{ SYS_mbind ,"mbind"},
#ifdef SYS_membarrier
	{ SYS_membarrier ,"membarrier"},
#endif
#ifdef __NR_membarrier
	{ __NR_membarrier ,"membarrier"},
#endif
#ifdef SYS_memfd_create
	{ SYS_memfd_create ,"memfd_create"},
#endif
#ifdef __NR_memfd_create
	{ __NR_memfd_create ,"memfd_create"},
#endif
	{ SYS_migrate_pages ,"migrate_pages"},
	{ SYS_mincore ,"mincore"},
	{ SYS_mkdir ,"mkdir"},
	{ SYS_mkdirat ,"mkdirat"},
	{ SYS_mknod ,"mknod"},
	{ SYS_mknodat ,"mknodat"},
	{ SYS_mlock ,"mlock"},
#ifdef SYS_mlock2
	{ SYS_mlock2 ,"mlock2"},
#endif
#ifdef __NR_mlock2
	{ __NR_mlock2 ,"mlock2"},
#endif
	{ SYS_mlockall ,"mlockall"},
	{ SYS_mmap ,"mmap"},
	{ SYS_mmap2 ,"mmap2"},
	{ SYS_modify_ldt ,"modify_ldt"},
	{ SYS_mount ,"mount"},
	{ SYS_move_pages ,"move_pages"},
	{ SYS_mprotect ,"mprotect"},
	{ SYS_mpx ,"mpx"},
	{ SYS_mq_getsetattr ,"mq_getsetattr"},
	{ SYS_mq_notify ,"mq_notify"},
	{ SYS_mq_open ,"mq_open"},
	{ SYS_mq_timedreceive ,"mq_timedreceive"},
	{ SYS_mq_timedsend ,"mq_timedsend"},
	{ SYS_mq_unlink ,"mq_unlink"},
	{ SYS_mremap ,"mremap"},
	{ SYS_msync ,"msync"},
	{ SYS_munlock ,"munlock"},
	{ SYS_munlockall ,"munlockall"},
	{ SYS_munmap ,"munmap"},
#ifdef SYS_name_to_handle_at
	{ SYS_name_to_handle_at ,"name_to_handle_at"},
#endif
#ifdef __NR_name_to_handle_at
	{ __NR_name_to_handle_at ,"name_to_handle_at"},
#endif
	{ SYS_nanosleep ,"nanosleep"},
	{ SYS_nfsservctl ,"nfsservctl"},
	{ SYS_nice ,"nice"},
	{ SYS_oldfstat ,"oldfstat"},
	{ SYS_oldlstat ,"oldlstat"},
	{ SYS_oldolduname ,"oldolduname"},
	{ SYS_oldstat ,"oldstat"},
	{ SYS_olduname ,"olduname"},
	{ SYS_open ,"open"},
#ifdef SYS_open_by_handle_at
	{ SYS_open_by_handle_at ,"open_by_handle_at"},
#endif
#ifdef __NR_open_by_handle_at
	{ __NR_open_by_handle_at ,"open_by_handle_at"},
#endif
	{ SYS_openat ,"openat"},
	{ SYS_pause ,"pause"},
#ifdef SYS_perf_event_open
	{ SYS_perf_event_open ,"perf_event_open"},
#endif
	{ SYS_personality ,"personality"},
	{ SYS_pipe ,"pipe"},
#ifdef SYS_pipe2
	{ SYS_pipe2 ,"pipe2"},
#endif
	{ SYS_pivot_root ,"pivot_root"},
	{ SYS_poll ,"poll"},
	{ SYS_ppoll ,"ppoll"},
	{ SYS_prctl ,"prctl"},
	{ SYS_pread64 ,"pread64"},
#ifdef SYS_preadv
	{ SYS_preadv ,"preadv"},
#endif
#ifdef SYS_prlimit64
	{ SYS_prlimit64 ,"prlimit64"},
#endif
#ifdef __NR_prlimit64
	{ __NR_prlimit64 ,"prlimit64"},
#endif
#ifdef SYS_process_vm_readv
	{ SYS_process_vm_readv ,"process_vm_readv"},
#endif
#ifdef __NR_process_vm_readv
	{ __NR_process_vm_readv ,"process_vm_readv"},
#endif
#ifdef SYS_process_vm_writev
	{ SYS_process_vm_writev ,"process_vm_writev"},
#endif
#ifdef __NR_process_vm_writev
	{ __NR_process_vm_writev ,"process_vm_writev"},
#endif
	{ SYS_prof ,"prof"},
	{ SYS_profil ,"profil"},
	{ SYS_pselect6 ,"pselect6"},
	{ SYS_ptrace ,"ptrace"},
	{ SYS_putpmsg ,"putpmsg"},
	{ SYS_pwrite64 ,"pwrite64"},
#ifdef SYS_pwritev
	{ SYS_pwritev ,"pwritev"},
#endif
	{ SYS_query_module ,"query_module"},
	{ SYS_quotactl ,"quotactl"},
	{ SYS_read ,"read"},
	{ SYS_readahead ,"readahead"},
	{ SYS_readdir ,"readdir"},
	{ SYS_readlink ,"readlink"},
	{ SYS_readlinkat ,"readlinkat"},
	{ SYS_readv ,"readv"},
	{ SYS_reboot ,"reboot"},
#ifdef SYS_recvfrom
	{ SYS_recvfrom ,"recvfrom"},
#endif
#ifdef __NR_recvfrom
	{ __NR_recvfrom ,"recvfrom"},
#endif
#ifdef SYS_recvmmsg
	{ SYS_recvmmsg ,"recvmmsg"},
#endif
#ifdef SYS_recvmsg
	{ SYS_recvmsg ,"recvmsg"},
#endif
#ifdef __NR_recvmsg
	{ __NR_recvmsg ,"recvmsg"},
#endif
	{ SYS_remap_file_pages ,"remap_file_pages"},
	{ SYS_removexattr ,"removexattr"},
	{ SYS_rename ,"rename"},
	{ SYS_renameat ,"renameat"},
#ifdef SYS_renameat2
	{ SYS_renameat2 ,"renameat2"},
#endif
#ifdef __NR_renameat2
	{ __NR_renameat2 ,"renameat2"},
#endif
	{ SYS_request_key ,"request_key"},
	{ SYS_restart_syscall ,"restart_syscall"},
	{ SYS_rmdir ,"rmdir"},
	{ SYS_rt_sigaction ,"rt_sigaction"},
	{ SYS_rt_sigpending ,"rt_sigpending"},
	{ SYS_rt_sigprocmask ,"rt_sigprocmask"},
	{ SYS_rt_sigqueueinfo ,"rt_sigqueueinfo"},
	{ SYS_rt_sigreturn ,"rt_sigreturn"},
	{ SYS_rt_sigsuspend ,"rt_sigsuspend"},
	{ SYS_rt_sigtimedwait ,"rt_sigtimedwait"},
#ifdef SYS_rt_tgsigqueueinfo
	{ SYS_rt_tgsigqueueinfo ,"rt_tgsigqueueinfo"},
#endif
	{ SYS_sched_get_priority_max ,"sched_get_priority_max"},
	{ SYS_sched_get_priority_min ,"sched_get_priority_min"},
	{ SYS_sched_getaffinity ,"sched_getaffinity"},
#ifdef SYS_sched_getattr
	{ SYS_sched_getattr ,"sched_getattr"},
#endif
#ifdef __NR_sched_getattr
	{ __NR_sched_getattr ,"sched_getattr"},
#endif
	{ SYS_sched_getparam ,"sched_getparam"},
	{ SYS_sched_getscheduler ,"sched_getscheduler"},
	{ SYS_sched_rr_get_interval ,"sched_rr_get_interval"},
	{ SYS_sched_setaffinity ,"sched_setaffinity"},
#ifdef SYS_sched_setattr
	{ SYS_sched_setattr ,"sched_setattr"},
#endif
#ifdef __NR_sched_setattr
	{ __NR_sched_setattr ,"sched_setattr"},
#endif
	{ SYS_sched_setparam ,"sched_setparam"},
	{ SYS_sched_setscheduler ,"sched_setscheduler"},
	{ SYS_sched_yield ,"sched_yield"},
#ifdef SYS_seccomp
	{ SYS_seccomp ,"seccomp"},
#endif
#ifdef __NR_seccomp
	{ __NR_seccomp ,"seccomp"},
#endif
	{ SYS_select ,"select"},
	{ SYS_sendfile ,"sendfile"},
	{ SYS_sendfile64 ,"sendfile64"},
#ifdef SYS_sendmmsg
	{ SYS_sendmmsg ,"sendmmsg"},
#endif
#ifdef __NR_sendmmsg
	{ __NR_sendmmsg ,"sendmmsg"},
#endif
#ifdef SYS_sendmsg
	{ SYS_sendmsg ,"sendmsg"},
#endif
#ifdef __NR_sendmsg
	{ __NR_sendmsg ,"sendmsg"},
#endif
#ifdef SYS_sendto
	{ SYS_sendto ,"sendto"},
#endif
#ifdef __NR_sendto
	{ __NR_sendto ,"sendto"},
#endif
	{ SYS_set_mempolicy ,"set_mempolicy"},
	{ SYS_set_robust_list ,"set_robust_list"},
	{ SYS_set_thread_area ,"set_thread_area"},
	{ SYS_set_tid_address ,"set_tid_address"},
	{ SYS_setdomainname ,"setdomainname"},
	{ SYS_setfsgid ,"setfsgid"},
	{ SYS_setfsgid32 ,"setfsgid32"},
	{ SYS_setfsuid ,"setfsuid"},
	{ SYS_setfsuid32 ,"setfsuid32"},
	{ SYS_setgid ,"setgid"},
	{ SYS_setgid32 ,"setgid32"},
	{ SYS_setgroups ,"setgroups"},
	{ SYS_setgroups32 ,"setgroups32"},
	{ SYS_sethostname ,"sethostname"},
	{ SYS_setitimer ,"setitimer"},
#ifdef SYS_setns
	{ SYS_setns ,"setns"},
#endif
#ifdef __NR_setns
	{ __NR_setns ,"setns"},
#endif
	{ SYS_setpgid ,"setpgid"},
	{ SYS_setpriority ,"setpriority"},
	{ SYS_setregid ,"setregid"},
	{ SYS_setregid32 ,"setregid32"},
	{ SYS_setresgid ,"setresgid"},
	{ SYS_setresgid32 ,"setresgid32"},
	{ SYS_setresuid ,"setresuid"},
	{ SYS_setresuid32 ,"setresuid32"},
	{ SYS_setreuid ,"setreuid"},
	{ SYS_setreuid32 ,"setreuid32"},
	{ SYS_setrlimit ,"setrlimit"},
	{ SYS_setsid ,"setsid"},
#ifdef SYS_setsockopt
	{ SYS_setsockopt ,"setsockopt"},
#endif
#ifdef __NR_setsockopt
	{ __NR_setsockopt ,"setsockopt"},
#endif
	{ SYS_settimeofday ,"settimeofday"},
	{ SYS_setuid ,"setuid"},
	{ SYS_setuid32 ,"setuid32"},
	{ SYS_setxattr ,"setxattr"},
	{ SYS_sgetmask ,"sgetmask"},
#ifdef SYS_shutdown
	{ SYS_shutdown ,"shutdown"},
#endif
#ifdef __NR_shutdown
	{ __NR_shutdown ,"shutdown"},
#endif
	{ SYS_sigaction ,"sigaction"},
	{ SYS_sigaltstack ,"sigaltstack"},
	{ SYS_signal ,"signal"},
#ifdef SYS_signalfd
	{ SYS_signalfd ,"signalfd"},
#endif
#ifdef SYS_signalfd4
	{ SYS_signalfd4 ,"signalfd4"},
#endif
	{ SYS_sigpending ,"sigpending"},
	{ SYS_sigprocmask ,"sigprocmask"},
	{ SYS_sigreturn ,"sigreturn"},
	{ SYS_sigsuspend ,"sigsuspend"},
#ifdef SYS_socket
	{ SYS_socket ,"socket"},
#endif
#ifdef __NR_socket
	{ __NR_socket ,"socket"},
#endif
	{ SYS_socketcall ,"socketcall"},
#ifdef SYS_socketpair
	{ SYS_socketpair ,"socketpair"},
#endif
#ifdef __NR_socketpair
	{ __NR_socketpair ,"socketpair"},
#endif
	{ SYS_splice ,"splice"},
	{ SYS_ssetmask ,"ssetmask"},
	{ SYS_stat ,"stat"},
	{ SYS_stat64 ,"stat64"},
	{ SYS_statfs ,"statfs"},
	{ SYS_statfs64 ,"statfs64"},
	{ SYS_stime ,"stime"},
	{ SYS_stty ,"stty"},
	{ SYS_swapoff ,"swapoff"},
	{ SYS_swapon ,"swapon"},
	{ SYS_symlink ,"symlink"},
	{ SYS_symlinkat ,"symlinkat"},
	{ SYS_sync ,"sync"},
	{ SYS_sync_file_range ,"sync_file_range"},
#ifdef SYS_syncfs
	{ SYS_syncfs ,"syncfs"},
#endif
#ifdef __NR_syncfs
	{ __NR_syncfs ,"syncfs"},
#endif
	{ SYS_sysfs ,"sysfs"},
	{ SYS_sysinfo ,"sysinfo"},
	{ SYS_syslog ,"syslog"},
	{ SYS_tee ,"tee"},
	{ SYS_tgkill ,"tgkill"},
	{ SYS_time ,"time"},
	{ SYS_timer_create ,"timer_create"},
	{ SYS_timer_delete ,"timer_delete"},
	{ SYS_timer_getoverrun ,"timer_getoverrun"},
	{ SYS_timer_gettime ,"timer_gettime"},
	{ SYS_timer_settime ,"timer_settime"},
#ifdef SYS_timerfd_create
	{ SYS_timerfd_create ,"timerfd_create"},
#endif
#ifdef SYS_timerfd_gettime
	{ SYS_timerfd_gettime ,"timerfd_gettime"},
#endif
#ifdef SYS_timerfd_settime
	{ SYS_timerfd_settime ,"timerfd_settime"},
#endif
	{ SYS_times ,"times"},
	{ SYS_tkill ,"tkill"},
	{ SYS_truncate ,"truncate"},
	{ SYS_truncate64 ,"truncate64"},
	{ SYS_ugetrlimit ,"ugetrlimit"},
	{ SYS_ulimit ,"ulimit"},
	{ SYS_umask ,"umask"},
	{ SYS_umount ,"umount"},
	{ SYS_umount2 ,"umount2"},
	{ SYS_uname ,"uname"},
	{ SYS_unlink ,"unlink"},
	{ SYS_unlinkat ,"unlinkat"},
	{ SYS_unshare ,"unshare"},
	{ SYS_uselib ,"uselib"},
#ifdef SYS_userfaultfd
	{ SYS_userfaultfd ,"userfaultfd"},
#endif
#ifdef __NR_userfaultfd
	{ __NR_userfaultfd ,"userfaultfd"},
#endif
	{ SYS_ustat ,"ustat"},
	{ SYS_utime ,"utime"},
#ifdef SYS_utimensat
	{ SYS_utimensat ,"utimensat"},
#endif
	{ SYS_utimes ,"utimes"},
	{ SYS_vfork ,"vfork"},
	{ SYS_vhangup ,"vhangup"},
	{ SYS_vm86 ,"vm86"},
	{ SYS_vm86old ,"vm86old"},
	{ SYS_vmsplice ,"vmsplice"},
	{ SYS_vserver ,"vserver"},
	{ SYS_wait4 ,"wait4"},
	{ SYS_waitid ,"waitid"},
	{ SYS_waitpid ,"waitpid"},
	{ SYS_write ,"write"},
	{ SYS_writev ,"writev"},
	{ 0, NULL }
};
#endif

#endif

char *get_syscall(int syscallnr){
	static char retval[256];
	int i;
	for ( i = 0; gix_syscalls[i].name != NULL; i++ ){
		if ( syscallnr == gix_syscalls[i].nr ) return(gix_syscalls[i].name);
	}	
	sprintf(retval,"syscall_%d",syscallnr);	
	return(retval);	
}
