Merge commit 'dharmatech/master'

release
Slava Pestov 2007-11-14 17:05:45 -05:00
commit e951f93b2e
3 changed files with 84 additions and 1 deletions

View File

@ -105,7 +105,7 @@ factory-menu> set-menu-items
! VAR: root-menu
{ { "xterm" [ "xterm &" system drop ] }
{ { "xterm" [ "urxvt -bd grey +sb &" system drop ] }
{ "Firefox" [ "firefox &" system drop ] }
{ "xclock" [ "xclock &" system drop ] }
{ "Apps >" [ apps-menu> <- popup ] }

View File

@ -0,0 +1,67 @@
USING: kernel alien alien.c-types
io.sockets
io.sockets.impl
unix
unix.linux.sockios
unix.linux.if ;
IN: unix.linux.ifreq
: set-if-addr ( name addr -- )
"struct-ifreq" <c-object>
rot string>char-alien over set-struct-ifreq-ifr-ifrn
swap 0 <inet4> make-sockaddr over set-struct-ifreq-ifr-ifru
AF_INET SOCK_DGRAM 0 socket SIOCSIFADDR rot ioctl drop ;
! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
: set-if-flags ( name flags -- )
"struct-ifreq" <c-object>
rot string>char-alien over set-struct-ifreq-ifr-ifrn
swap <short> over set-struct-ifreq-ifr-ifru
AF_INET SOCK_DGRAM 0 socket SIOCSIFFLAGS rot ioctl drop ;
! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
: set-if-dst-addr ( name addr -- )
"struct-ifreq" <c-object>
rot string>char-alien over set-struct-ifreq-ifr-ifrn
swap 0 <inet4> make-sockaddr over set-struct-ifreq-ifr-ifru
AF_INET SOCK_DGRAM 0 socket SIOCSIFDSTADDR rot ioctl drop ;
! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
: set-if-brd-addr ( name addr -- )
"struct-ifreq" <c-object>
rot string>char-alien over set-struct-ifreq-ifr-ifrn
swap 0 <inet4> make-sockaddr over set-struct-ifreq-ifr-ifru
AF_INET SOCK_DGRAM 0 socket SIOCSIFBRDADDR rot ioctl drop ;
! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
: set-if-netmask ( name addr -- )
"struct-ifreq" <c-object>
rot string>char-alien over set-struct-ifreq-ifr-ifrn
swap 0 <inet4> make-sockaddr over set-struct-ifreq-ifr-ifru
AF_INET SOCK_DGRAM 0 socket SIOCSIFNETMASK rot ioctl drop ;
! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
: set-if-metric ( name metric -- )
"struct-ifreq" <c-object>
rot string>char-alien over set-struct-ifreq-ifr-ifrn
swap <int> over set-struct-ifreq-ifr-ifru
AF_INET SOCK_DGRAM 0 socket SIOCSIFMETRIC rot ioctl drop ;
! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
USING: words quotations sequences math macros ;
MACRO: flags ( seq -- ) 0 swap [ execute bitor ] each 1quotation ;

View File

@ -3,6 +3,8 @@ USING: alien.syntax ;
IN: unix.linux.route
! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
C-STRUCT: struct-rtentry
{ "ulong" "rt_pad1" }
{ "struct-sockaddr" "rt_dst" }
@ -37,3 +39,17 @@ C-STRUCT: struct-rtentry
: RTF_NOFORWARD HEX: 1000 ; ! Forwarding inhibited.
: RTF_THROW HEX: 2000 ; ! Go to next class.
: RTF_NOPMTUDISC HEX: 4000 ; ! Do not send packets with DF.
! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
USING: kernel alien.c-types io.sockets io.sockets.impl
unix unix.linux.sockios ;
: route ( dst gateway genmask flags -- )
>r >r >r >r
"struct-rtentry" <c-object>
r> 0 <inet4> make-sockaddr over set-struct-rtentry-rt_dst
r> 0 <inet4> make-sockaddr over set-struct-rtentry-rt_gateway
r> 0 <inet4> make-sockaddr over set-struct-rtentry-rt_genmask
r> over set-struct-rtentry-rt_flags
AF_INET SOCK_DGRAM 0 socket SIOCADDRT rot ioctl drop ;