From 78eca97340779388bb52307895e5b4c56c5b3972 Mon Sep 17 00:00:00 2001 From: Eduardo Cavazos Date: Tue, 13 Nov 2007 19:20:42 -0600 Subject: [PATCH] Add unix.linux.ifreq --- extra/unix/linux/ifreq/ifreq.factor | 67 +++++++++++++++++++++++++++++ 1 file changed, 67 insertions(+) create mode 100644 extra/unix/linux/ifreq/ifreq.factor 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