12 /* socket extensions */
14 #include <sys/socket.h>
15 #include <netinet/in.h>
25 bind(int fd, void *a, int alen)
30 struct sockaddr_in *lip;
32 /* assign the address */
33 r = _sock_findrock(fd, 0);
38 if(alen > sizeof(r->addr)){
42 memmove(&r->addr, a, alen);
44 /* the rest is IP sepecific */
45 if (r->domain != PF_INET)
48 cfd = open(r->ctl, O_RDWR);
53 lip = (struct sockaddr_in*)&r->addr;
55 snprintf(msg, sizeof msg, "bind %d", ntohs(lip->sin_port));
57 strcpy(msg, "bind *");
58 n = write(cfd, msg, strlen(msg));
60 errno = EOPNOTSUPP; /* Improve error reporting!!! */
66 if(lip->sin_port <= 0)
67 _sock_ingetaddr(r, lip, &len, "local");