Adding host lookup.

This commit is contained in:
Brad Nelson
2022-08-11 00:07:46 -07:00
parent 00c6a87228
commit dce538da4a
3 changed files with 10 additions and 0 deletions

View File

@ -100,6 +100,9 @@ transfer sockets-builtins
: sockaddr create 16 c, AF_INET c, 0 bs, 0 l, 0 l, 0 l, ;
: ->port@ ( a -- n ) 2 + >r r@ c@ 256 * r> 1+ c@ + ;
: ->port! ( n a -- ) 2 + >r dup 256 / r@ c! r> 1+ c! ;
: ->addr@ ( a -- n ) 4 + ul@ ;
: ->addr! ( n a -- ) 4 + l! ;
: ->h_addr ( hostent -- n ) 2 cells + 8 + @ @ ul@ ;
forth definitions
vocabulary interrupts interrupts definitions

View File

@ -373,6 +373,7 @@ static cell_t TimerIsrRegister(cell_t group, cell_t timer, cell_t xt, cell_t arg
#else
# ifndef SIM_PRINT_ONLY
# include <errno.h>
# include <netdb.h>
# include <sys/select.h>
# include <sys/socket.h>
# include <sys/time.h>
@ -395,6 +396,7 @@ static cell_t TimerIsrRegister(cell_t group, cell_t timer, cell_t xt, cell_t arg
YV(sockets, recv, n0 = recv(n3, a2, n1, n0); NIPn(3)) \
YV(sockets, recvfrom, n0 = recvfrom(n5, a4, n3, n2, (struct sockaddr *) a1, (socklen_t *) a0); NIPn(5)) \
YV(sockets, recvmsg, n0 = recvmsg(n2, (struct msghdr *) a1, n0); NIPn(2)) \
YV(sockets, gethostbyname, n0 = (cell_t) gethostbyname(c0)) \
XV(sockets, "errno", ERRNO, PUSH errno)
#endif

View File

@ -31,6 +31,8 @@ z" recv" 4 sysfunc recv
z" recvfrom" 6 sysfunc recvfrom
z" recvmsg" 3 sysfunc recvmsg
z" gethostbyname" 1 sysfunc gethostbyname
1 constant SOCK_STREAM
2 constant SOCK_DGRAM
3 constant SOCK_RAW
@ -46,6 +48,9 @@ z" recvmsg" 3 sysfunc recvmsg
: sockaddr create AF_INET s, 0 bs, 0 l, 0 l, 0 l, ;
: ->port@ ( a -- n ) 2 + >r r@ c@ 256 * r> 1+ c@ + ;
: ->port! ( n a -- ) 2 + >r dup 256 / r@ c! r> 1+ c! ;
: ->addr@ ( a -- n ) 4 + ul@ ;
: ->addr! ( n a -- ) 4 + l! ;
: ->h_addr ( hostent -- n ) 2 cells + 8 + @ @ ul@ ;
( Fixup return )
: sockaccept sockaccept sign-extend ;