diff --git a/extra/factory/factory-menus b/extra/factory/factory-menus index 768906029c..dd5dc29378 100644 --- a/extra/factory/factory-menus +++ b/extra/factory/factory-menus @@ -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 ] } diff --git a/extra/unix/linux/ifreq/ifreq.factor b/extra/unix/linux/ifreq/ifreq.factor new file mode 100644 index 0000000000..c75ee9a5e4 --- /dev/null +++ b/extra/unix/linux/ifreq/ifreq.factor @@ -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" + rot string>char-alien over set-struct-ifreq-ifr-ifrn + swap 0 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" + rot string>char-alien over set-struct-ifreq-ifr-ifrn + swap over set-struct-ifreq-ifr-ifru + + AF_INET SOCK_DGRAM 0 socket SIOCSIFFLAGS rot ioctl drop ; + +! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +: set-if-dst-addr ( name addr -- ) + "struct-ifreq" + rot string>char-alien over set-struct-ifreq-ifr-ifrn + swap 0 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" + rot string>char-alien over set-struct-ifreq-ifr-ifrn + swap 0 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" + rot string>char-alien over set-struct-ifreq-ifr-ifrn + swap 0 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" + rot string>char-alien over set-struct-ifreq-ifr-ifrn + swap 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 ; \ No newline at end of file diff --git a/extra/unix/linux/route/route.factor b/extra/unix/linux/route/route.factor index 630a856042..c4eeadb69e 100644 --- a/extra/unix/linux/route/route.factor +++ b/extra/unix/linux/route/route.factor @@ -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" + r> 0 make-sockaddr over set-struct-rtentry-rt_dst + r> 0 make-sockaddr over set-struct-rtentry-rt_gateway + r> 0 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 ;