Direct Code Execution (DCE) is a module for NS-3 that provides facilities to execute, within ns-3, existing implementations of userspace and kernelspace network protocols or applications without source code changes. For example instead of using the pseudo application provided by NS-3 V4PingHelper you can use the true ping.
Below are listed the applications tested with DCE. You may find scripts examples of them under the example directory. The part tutorial explains how to run examples
CCNx is an open source implementation of Content Centric Networking. All the C written executables are supported and none of the Java ones. The versions tested are those between 0.4.0 and 0.6.1 included.
Ping from the following archive http://www.skbuff.net/iputils/iputils-s20101006.tar.bz2 is supported.
iperf from the following archive http://walami.googlecode.com/files/iperf-2.0.5.tar.gz as been tested. It is the exception that proves the rule. That is to say that this particular example requires a change in its code. In the source file named Thread.c at line 412 in the function named thread_rest you must add a sleep(1) in order to help DCE to break the infinite loop.
Below there is the list of the systems calls supported by DCE, the column named Type represents how the system call is implemented ie:
System Call Name | Domain | Include file | Type | Remarks |
---|---|---|---|---|
gettimeofday | Date & Time | sys/time.h | DCE | |
time | Date & Time | time.h | DCE | |
asctime, ctime, gmtime, localtime | Date & Time | time.h | DCE | |
asctime_r, ctime_r, gmtime_r, localtime_r, mktime, strftime | Date & Time | time.h | NATIVE | |
clock_gettime | Date & Time | time.h | NATIVE | Should not be NATIVE, do not use for now. |
read | IO | unistd.h | DCE | |
write | IO | unistd.h | DCE | |
writev | IO | sys/uio.h | DCE | |
clearerr | IO | stdio.h | DCE | |
setbuf, setbuffer, setlinebuf, setvbuf | IO | stdio.h | DCE | |
fseek, ftell, rewind, fgetpos, fsetpos | IO | stdio.h | DCE | |
printf | IO | stdio.h | DCE | |
fprintf | IO | stdio.h | NATIVE | |
sprintf, snprintf | IO | stdio.h | NATIVE | |
asprintf, vasprintf | IO | stdio.h | NATIVE | |
dprintf, vdprintf | IO | stdio.h | NATIVE | |
fgetc, fgetc_unlocked | IO | stdio.h | DCE | |
getc, getc_unlocked | IO | stdio.h | NATIVE | |
getchar, getchar_unlocked | IO | stdio.h | DCE | |
_IO_getc | IO | stdio.h | DCE | |
fputc, fputc_unlocked | IO | stdio.h | DCE | |
putc, putc_unlocked | IO | stdio.h | NATIVE | |
putchar, putchar_unlocked | IO | stdio.h | DCE | |
_IO_putc | IO | stdio.h | DCE | |
fgets, fgets_unlocked | IO | stdio.h | DCE | |
fputs, fputs_unlocked | IO | stdio.h | DCE | |
puts | IO | stdio.h | DCE | |
ungetc | IO | stdio.h | DCE | |
fclose | IO | stdio.h | DCE | |
fcloseall | IO | stdio.h | DCE | |
fopen, fdopen64, fdopen, freopen | IO | stdio.h | DCE | |
fflush, fflush_unlocked | IO | stdio.h | DCE | |
fread, fread_unlocked | IO | stdio.h | DCE | |
fwrite, fwrite_unlocked | IO | stdio.h | DCE | |
ferror, ferror_unlocked | IO | stdio.h | DCE | |
feof, feof_unlocked | IO | stdio.h | DCE | |
fileno, fileno_unlocked | IO | stdio.h | DCE | |
perror | IO | stdlib.h | DCE | |
vprintf | IO | stdarg.h | DCE | |
vfprintf, vsprintf, vsnprintf | IO | stdarg.h | NATIVE | |
fcntl | IO | fcntl.h | DCE | |
dup, dup2 | IO | unistd.h | DCE | |
open, open64 | IO | fcntl.h | DCE | |
close | IO | unistd.h | DCE | |
unlink | IO | unistd.h | DCE | |
remove | IO | stdio.h | DCE | |
mkdir | IO | sys/stat.h | DCE | |
rmdir | IO | unistd.h | DCE | |
select | IO | unistd.h | DCE | |
isatty | IO | unistd.h | DCE | |
ioctl | IO | sys/ioctl.h | DCE | |
poll | IO | poll.h | DCE | |
getcwd, getwd, get_current_dir_name | IO | unistd.h | DCE | |
chdir, fchdir | IO | unistd.h | DCE | |
alphasort, alphasort64, versionsort | IO | dirent.h | NATIVE | |
umask | IO | sys/stat.h | DCE | |
truncate, ftruncate | IO | unistd.h | DCE | |
ttyname | IO | unistd.h | DCE | |
lseek | IO | unistd.h | DCE | |
euidaccess, eaccess | IO | unistd.h | DCE | |
pathconf | IO | unistd.h | NATIVE | |
getpwnam, getpwuid, endpwent | IO | pwd.h | DCE | |
opendir, fdopendir | IO | dirent.h | DCE | |
readdir, readdir_r | IO | dirent.h | DCE | |
closedir | IO | dirent.h | DCE | |
dirfd | IO | dirent.h | DCE | |
rewinddir | IO | dirent.h | DCE | |
scandir | IO | dirent.h | DCE | |
unlinkat | IO | fcntl.h | DCE | |
pread, pwrite | IO | unistd.h | DCE | |
uname | Kernel | sys/utsname.h | DCE | |
sysconf | Kernel | unistd.h | NATIVE | |
calloc, malloc, free, realloc | Memory Allocation | stdlib.h | DCE | |
mmap, mmap64, munmap | Memory Mappings | sys/map.h | DCE | |
htonl | Networking | arpa/inet.h | NATIVE | |
htons | Networking | arpa/inet.h | NATIVE | |
ntohl | Networking | arpa/inet.h | NATIVE | |
htonl | Networking | arpa/inet.h | NATIVE | |
ntohs | Networking | arpa/inet.h | NATIVE | |
socket | Networking | sys/socket.h | DCE | Not all flavour are supported pleaselook at the doxygen doc. |
getsockname | Networking | sys/socket.h | DCE | |
getpeername | Networking | sys/socket.h | DCE | |
bind | Networking | sys/socket.h | DCE | |
connect | Networking | sys/socket.h | DCE | |
inet_aton, inet_addr, inet_network, inet_ntoa, inet_makeaddr, inet_lnaof, inet_netof | Networking | arpa/inet.h | NATIVE | |
inet_ntop | Networking | arpa/inet.h | DCE | |
inet_pton | Networking | arpa/inet.h | NATIVE | |
getsockopt, setsockopt | Networking | sys/socket.h | DCE | |
listen | Networking | sys/socket.h | DCE | |
accept | Networking | sys/socket.h | DCE | |
shutdown | Networking | sys/socket.h | DCE | |
send, sendto, sendmsg | Networking | sys/socket.h | DCE | |
recv, recvfrom, recvmsg | Networking | sys/socket.h | DCE | |
gethostbyname, gethostbyname2 | Networking | netdb.h | DCE | |
getaddrinfo, freeaddrinfo, gai_strerror | Networking | netdb.h | DCE | |
gethostent, sethostent, endhostset, hstrerror | Networking | netdb.h | NATIVE | |
herror | Networking | netdb.h | DCE | |
getprotoent, getprotobyname, getprotonumber, setprotoent, endprotoent | Networking | netdb.h | NATIVE | |
getservent, getservbyname, getservbyport, setservent, endservent | Networking | netdb.h | NATIVE | |
if_nametoindex | Networking | net/if.h | DCE | |
getnameinfo | Networking | sys/socket.h | DCE | |
ether_aton_r | Networking | netinet/ether.h | NATIVE | |
atexit | Process | stdlib.h | DCE | |
getpid, getppid | Process | unistd.h | DCE | |
getuid, geteuid | Process | unistd.h | DCE | |
setuid | Process | unistd.h | DCE | |
setgid | Process | unistd.h | DCE | |
seteuid, setegid | Process | unistd.h | DCE | |
setreuid, setregid | Process | unistd.h | DCE | |
setresuid, setresgid | Process | unistd.h | DCE | |
sched_yield | Process | sched.h | DCE | |
exit | Process | unistd.h | DCE | |
getenv | Process | stdlib.h | DCE | |
putenv | Process | stdlib.h | DCE | |
setenv, unsetenv | Process | stdlib.h | DCE | |
clearenv | Process | stdlib.h | DCE | |
fork | Process | unistd.h | DCE | Supported only with the Cooja Loader. |
abort | Process | stdlib.h | DCE | |
execl, execlp, execle, execv, execvp, execve | Process | unistd.h | DCE | Supported only with the pthread fiber manager. |
wait, waitpid | Process | sys/wait.h | DCE | |
sbrk | Process | unistd.h | DCE | |
getpagesize | Process | unistd.h | DCE | |
getgid, getegid | Process | unistd.h | DCE | |
gethostname | Process | unistd.h | DCE | |
getpgrp | Process | unistd.h | DCE | |
pipe | Process | unistd.h | DCE | |
__sigsetjmp, siglongjmp | Process | setjmp.h | NATIVE | Experimental, please do not use them. |
getdtablesize | Process | unistd.h | NATIVE | |
random, srandom | Random | stdlib.h | DCE | |
rand, srand | Random | stdlib.h | DCE | |
drand48, erand48, lrand48, nrand48, mrand48, jrand48, srand48, seed48, lcong48 | Random | stdlib.h | DCE | |
drand48_r, erand48_r, lrand48_r, nrand48_r, mrand48_r, jrand48_r, srand48_r, seed48_r, lcong48_r | Random | stdlib.h | DCE | |
signal | Signal | signal.h | DCE | |
sigaction | Signal | signal.h | DCE | |
sigemptyset, sigfillset, sigaddset, sigdelset, sigismember | Signal | signal.h | NATIVE | |
sigprocmask | Signal | signal.h | DCE | |
qsort | Sort | stdlib.h | NATIVE | |
strerror, strerror_h | String | string.h | NATIVE | |
setlocale | String | locale.h | DCE | Do nothing at all |
strcoll | String | string.h | NATIVE | |
uselocale | String | locale.h | NATIVE | |
newlocale | String | locale.h | NATIVE | |
wctob | String | wchar.h | NATIVE | |
btowc | String | wchar.h | NATIVE | |
memset | String | string.h | NATIVE | |
memcpy | String | string.h | NATIVE | |
bcopy | String | string.h | NATIVE | |
memcmp | String | string.h | NATIVE | |
memmove | String | string.h | NATIVE | |
memchr | String | string.h | NATIVE | |
strcpy, strncpy | String | string.h | NATIVE | |
strcat, strncat | String | string.h | NATIVE | |
strcmp, strncmp | String | string.h | NATIVE | |
strlen, strnlen | String | string.h | NATIVE | |
strspn, strcspn | String | string.h | NATIVE | |
strchr, strrchr | String | string.h | NATIVE | |
strcasecmp, strncasecmp | String | string.h | NATIVE | |
strdup, strndup | String | string.h | DCE | |
getopt, getopt_long | String | unistd.h | DCE | |
atoi, atol, atoll, atof | String | stdlib.h | NATIVE | |
strtol, strtoll | String | stdlib.h | DCE | |
strtoul, strtoull | String | stdlib.h | DCE | |
strtod | String | stdlib.h | DCE | |
toupper, tolower | String | ctype.h | NATIVE | |
index, rindex | String | strings.h | NATIVE | |
strtok, strtok_r | String | string.h | NATIVE | |
sscanf | String | stdio.h | NATIVE | |
basename, dirname | String | libgen.h | NATIVE | |
bindtextdomain, textdomain, gettext | String | libintl.h | NATIVE | |
mbrlen | String | wchar.h | NATIVE | |
strtoimax, strtoumax | String | inttypes.h | NATIVE | |
openlog, syslog, closelog, vsyslog, setlogmask | Syslog | syslog.h | DCE | |
pthread_create | Thread | pthread.h | DCE | |
pthread_exit | Thread | pthread.h | DCE | |
pthread_self | Thread | pthread.h | DCE | |
pthread_once | Thread | pthread.h | DCE | |
pthread_getspecific, pthread_setspecific | Thread | pthread.h | DCE | |
pthread_key_create | Thread | pthread.h | DCE | |
pthread_key_delete | Thread | pthread.h | DCE | |
pthread_mutex_destroy, pthread_mutex_init | Thread | pthread.h | DCE | |
pthread_mutex_lock, pthread_mutex_trylock, pthread_mutex_unlock | Thread | pthread.h | DCE | |
pthread_mutexattr_destroy, pthread_mutexattr_init | Thread | pthread.h | DCE | |
pthread_mutexattr_settype | Thread | pthread.h | DCE | |
pthread_cancel | Thread | pthread.h | DCE | |
pthread_kill | Thread | pthread.h | DCE | |
pthread_join | Thread | pthread.h | DCE | |
pthread_detach | Thread | pthread.h | DCE | |
pthread_cond_destroy, pthread_cond_init | Thread | pthread.h | DCE | |
pthread_cond_broadcast, pthread_cond_signal | Thread | pthread.h | DCE | |
pthread_cond_timedwait, pthread_cond_wait | Thread | pthread.h | DCE | |
pthread_condattr_destroy, pthread_condattr_init | Thread | pthread.h | DCE | |
sem_init | Thread Synchronization | semaphore.h | DCE | |
sem_destroy | Thread Synchronization | semaphore.h | DCE | |
sem_post | Thread Synchronization | semaphore.h | DCE | |
sem_wait, sem_trywait, sem_timedwait | Thread Synchronization | semaphore.h | DCE | |
sem_getvalue | Thread Synchronization | semaphore.h | DCE | |
sleep, usleep | Timer | unistd.h | DCE | |
nanosleep | Timer | time.h | DCE | |
getitimer, setitimer | Timer | sys/time.h | DCE | |
timerfd_create, timerfd_settime, timerfd_gettime | Timer | sys/timerfd.h | DCE | |
getgrnam | Users & Groups | grp.h | NATIVE | |
getrusage | Users & Groups | sys/resource.h | NATIVE |