12 /* socket extensions */
14 #include <sys/socket.h>
15 #include <netinet/in.h>
25 bind(int fd, void *a, int alen)
27 int n, len, cfd, port;
32 /* assign the address */
33 r = _sock_findrock(fd, 0);
38 sa = (struct sockaddr*)a;
39 if(sa->sa_family != r->domain){
43 if(alen > sizeof(r->addr)){
47 memmove(&r->addr, a, alen);
49 /* the rest is IP sepecific */
50 if (r->domain != PF_INET && r->domain != PF_INET6)
53 cfd = open(r->ctl, O_RDWR);
58 port = _sock_inport(&r->addr);
60 snprintf(msg, sizeof msg, "bind %d", port);
62 strcpy(msg, "bind *");
63 n = write(cfd, msg, strlen(msg));
65 errno = EOPNOTSUPP; /* Improve error reporting!!! */
71 _sock_ingetaddr(r, &r->addr, 0, "local");