xref: /aosp_15_r20/external/libcap/contrib/capso/bind.c (revision 2810ac1b38eead2603277920c78344c84ddf3aff)
1*2810ac1bSKiyoung Kim /*
2*2810ac1bSKiyoung Kim  * Unprivileged program that binds to port 80. It does this by
3*2810ac1bSKiyoung Kim  * leveraging a file capable shared library.
4*2810ac1bSKiyoung Kim  */
5*2810ac1bSKiyoung Kim #include <stdio.h>
6*2810ac1bSKiyoung Kim #include <stdlib.h>
7*2810ac1bSKiyoung Kim #include <sys/types.h>
8*2810ac1bSKiyoung Kim #include <sys/socket.h>
9*2810ac1bSKiyoung Kim #include <unistd.h>
10*2810ac1bSKiyoung Kim 
11*2810ac1bSKiyoung Kim #include "capso.h"
12*2810ac1bSKiyoung Kim 
main(int argc,char ** argv)13*2810ac1bSKiyoung Kim int main(int argc, char **argv) {
14*2810ac1bSKiyoung Kim     int f = bind80("127.0.0.1");
15*2810ac1bSKiyoung Kim     if (f < 0) {
16*2810ac1bSKiyoung Kim 	perror("unable to bind to port 80");
17*2810ac1bSKiyoung Kim 	exit(1);
18*2810ac1bSKiyoung Kim     }
19*2810ac1bSKiyoung Kim     if (listen(f, 10) == -1) {
20*2810ac1bSKiyoung Kim 	perror("unable to listen to port 80");
21*2810ac1bSKiyoung Kim 	exit(1);
22*2810ac1bSKiyoung Kim     }
23*2810ac1bSKiyoung Kim     printf("Webserver code to use filedes = %d goes here.\n"
24*2810ac1bSKiyoung Kim 	   "(Sleeping for 60s... Try 'netstat -tlnp|grep :80')\n", f);
25*2810ac1bSKiyoung Kim     fflush(stdout);
26*2810ac1bSKiyoung Kim     sleep(60);
27*2810ac1bSKiyoung Kim     close(f);
28*2810ac1bSKiyoung Kim     printf("Done.\n");
29*2810ac1bSKiyoung Kim }
30