aboutsummaryrefslogtreecommitdiff
path: root/contrib/capso/bind.c
diff options
context:
space:
mode:
Diffstat (limited to 'contrib/capso/bind.c')
-rw-r--r--contrib/capso/bind.c29
1 files changed, 29 insertions, 0 deletions
diff --git a/contrib/capso/bind.c b/contrib/capso/bind.c
new file mode 100644
index 0000000..609e4e4
--- /dev/null
+++ b/contrib/capso/bind.c
@@ -0,0 +1,29 @@
+/*
+ * Unprivileged program that binds to port 80. It does this by
+ * leveraging a file capable shared library.
+ */
+#include <stdio.h>
+#include <stdlib.h>
+#include <sys/types.h>
+#include <sys/socket.h>
+#include <unistd.h>
+
+#include "capso.h"
+
+int main(int argc, char **argv) {
+ int f = bind80("127.0.0.1");
+ if (f < 0) {
+ perror("unable to bind to port 80");
+ exit(1);
+ }
+ if (listen(f, 10) == -1) {
+ perror("unable to listen to port 80");
+ exit(1);
+ }
+ printf("Webserver code to use filedes = %d goes here.\n"
+ "(Sleeping for 60s... Try 'netstat -tlnp|grep :80')\n", f);
+ fflush(stdout);
+ sleep(60);
+ close(f);
+ printf("Done.\n");
+}