[PATCH 1/2] libgst: Remove left-over of Process>>#startExecution:

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
4 messages Options
Reply | Threaded
Open this post in threaded view
|

[PATCH 1/2] libgst: Remove left-over of Process>>#startExecution:

Holger Freyther
Paolo pointed out that there are more left overs and this appears
to be one of them.

2014-03-25  Holger Hans Peter Freyther  <[hidden email]>

        * sym.c: Remove _gst_start_execution_symbol.
        * sym.h: Remove _gst_start_execution_symbol.
---
 libgst/ChangeLog | 5 +++++
 libgst/sym.c     | 2 --
 libgst/sym.h     | 1 -
 3 files changed, 5 insertions(+), 3 deletions(-)

diff --git a/libgst/ChangeLog b/libgst/ChangeLog
index a8f5b4e..176a8a3 100644
--- a/libgst/ChangeLog
+++ b/libgst/ChangeLog
@@ -1,3 +1,8 @@
+2014-03-25  Holger Hans Peter Freyther  <[hidden email]>
+
+ * sym.c: Remove _gst_start_execution_symbol.
+ * sym.h: Remove _gst_start_execution_symbol.
+
 2014-02-10  Holger Hans Peter Freyther  <[hidden email]>
 
  * input.c: Free memory that has been dynamically allocated.
diff --git a/libgst/sym.c b/libgst/sym.c
index bbc3e9d..672309e 100644
--- a/libgst/sym.c
+++ b/libgst/sym.c
@@ -140,7 +140,6 @@ OOP _gst_self_symbol = NULL;
 OOP _gst_short_symbol = NULL;
 OOP _gst_smalltalk_symbol = NULL;
 OOP _gst_smalltalk_namespace_symbol = NULL;
-OOP _gst_start_execution_symbol = NULL;
 OOP _gst_string_out_symbol = NULL;
 OOP _gst_string_symbol = NULL;
 OOP _gst_super_symbol = NULL;
@@ -294,7 +293,6 @@ static const symbol_info sym_info[] = {
   {&_gst_ushort_symbol, "uShort"},
   {&_gst_smalltalk_symbol, "smalltalk"},
   {&_gst_smalltalk_namespace_symbol, "Smalltalk"},
-  {&_gst_start_execution_symbol, "startExecution:"},
   {&_gst_string_out_symbol, "stringOut"},
   {&_gst_string_symbol, "string"},
   {&_gst_super_symbol, "super"},
diff --git a/libgst/sym.h b/libgst/sym.h
index 87c1f1c..ab23267 100644
--- a/libgst/sym.h
+++ b/libgst/sym.h
@@ -130,7 +130,6 @@ extern OOP _gst_short_symbol ATTRIBUTE_HIDDEN;
 extern OOP _gst_ushort_symbol ATTRIBUTE_HIDDEN;
 extern OOP _gst_smalltalk_symbol ATTRIBUTE_HIDDEN;
 extern OOP _gst_smalltalk_namespace_symbol ATTRIBUTE_HIDDEN;
-extern OOP _gst_start_execution_symbol ATTRIBUTE_HIDDEN;
 extern OOP _gst_string_out_symbol ATTRIBUTE_HIDDEN;
 extern OOP _gst_string_symbol ATTRIBUTE_HIDDEN;
 extern OOP _gst_super_symbol ATTRIBUTE_HIDDEN;
--
1.9.0


_______________________________________________
help-smalltalk mailing list
[hidden email]
https://lists.gnu.org/mailman/listinfo/help-smalltalk
Reply | Threaded
Open this post in threaded view
|

[PATCH 2/2] netlink: Introduce a Linux/Netlink extension for GNU Smalltalk

Holger Freyther
The module only supports one query right now but it could and
should grow over time. The Transport of the OsmoSIP binds to the
unknown address but when addressing a UAS/Proxy it needs to fill
in a real IPv4 Address in the Contact header. This module can be
used for that.

  (Sockets.SocketAddress byName: 'remote') determineSourceAddress

2014-03-25  Holger Hans Peter Freyther  <[hidden email]>

        * Extensions.st: Add file.
        * Netlink.st: Add file.
        * netlink.c: Add file.
        * package.xml: Add file.
---
 .gitignore                      |   1 +
 NEWS                            |   2 +
 configure.ac                    |   4 +
 packages/netlink/ChangeLog      |   6 ++
 packages/netlink/Extensions.st  |  55 ++++++++++++++
 packages/netlink/Makefile.am    |   9 +++
 packages/netlink/Makefile.frag  |   5 ++
 packages/netlink/Netlink.st     |  46 ++++++++++++
 packages/netlink/NetlinkTest.st |  41 ++++++++++
 packages/netlink/netlink.c      | 163 ++++++++++++++++++++++++++++++++++++++++
 packages/netlink/package.xml    |  14 ++++
 11 files changed, 346 insertions(+)
 create mode 100644 packages/netlink/ChangeLog
 create mode 100644 packages/netlink/Extensions.st
 create mode 100644 packages/netlink/Makefile.am
 create mode 100644 packages/netlink/Makefile.frag
 create mode 100644 packages/netlink/Netlink.st
 create mode 100644 packages/netlink/NetlinkTest.st
 create mode 100644 packages/netlink/netlink.c
 create mode 100644 packages/netlink/package.xml

diff --git a/.gitignore b/.gitignore
index b36d450..b94bc20 100644
--- a/.gitignore
+++ b/.gitignore
@@ -65,6 +65,7 @@ packages/gtk/structs
 packages/i18n/ref-add.sed
 packages/i18n/ref-del.sed
 packages/net/gnutls-wrapper
+packages/netlink/stamp-classes
 packages/object-dumper/stamp-classes
 packages/sttools/stamp-classes
 snprintfv/snprintfv/compat.stamp
diff --git a/NEWS b/NEWS
index bb33a80..d66e099 100644
--- a/NEWS
+++ b/NEWS
@@ -26,6 +26,8 @@ o   VisualGST now understands the CTRL + . shortcut. This will flush the
 o   gst-sunit now understands the -d/--debug parameter. In case of an
     unhandled exception or a test failure VisualGST will be spawned.
 
+o   The Netlink module has been added for Linux.
+
 -----------------------------------------------------------------------------
 
 NEWS FROM 3.2.4 to 3.2.5
diff --git a/configure.ac b/configure.ac
index dbc75a6..bfd09a4 100644
--- a/configure.ac
+++ b/configure.ac
@@ -585,6 +585,10 @@ GST_PACKAGE_ENABLE([LibSDL_ttf], [sdl/libsdl_ttf],
   [ac_cv_lib_SDL_ttf_TTF_Init])
 
 GST_PACKAGE_ENABLE([Compiler], [stinst/compiler])
+GST_PACKAGE_ENABLE([Netlink], [netlink],
+   [AC_CHECK_HEADERS([linux/netlink.h linux/rtnetlink.h])],
+   [ac_cv_header_linux_netlink_h ac_cv_header_linux_rtnetlink_h],
+   [Makefile], [netlink.la])
 GST_PACKAGE_ENABLE([Parser], [stinst/parser])
 GST_PACKAGE_ENABLE([ClassPublisher], [stinst/doc])
 GST_PACKAGE_ENABLE([ProfileTools], [profile])
diff --git a/packages/netlink/ChangeLog b/packages/netlink/ChangeLog
new file mode 100644
index 0000000..16128cb
--- /dev/null
+++ b/packages/netlink/ChangeLog
@@ -0,0 +1,6 @@
+2014-03-25  Holger Hans Peter Freyther  <[hidden email]>
+
+ * Extensions.st: Add file.
+ * Netlink.st: Add file.
+ * netlink.c: Add file.
+ * package.xml: Add file.
diff --git a/packages/netlink/Extensions.st b/packages/netlink/Extensions.st
new file mode 100644
index 0000000..2e456f1
--- /dev/null
+++ b/packages/netlink/Extensions.st
@@ -0,0 +1,55 @@
+"======================================================================
+|
+|   Netlink module declarations
+|
+|
+ ======================================================================"
+
+"======================================================================
+|
+| Copyright 2014 Free Software Foundation, Inc.
+| Written by Holger Hans Peter Freyther
+|
+| This file is part of the GNU Smalltalk class library.
+|
+| The GNU Smalltalk class library is free software; you can redistribute it
+| and/or modify it under the terms of the GNU Lesser General Public License
+| as published by the Free Software Foundation; either version 2.1, or (at
+| your option) any later version.
+|
+| The GNU Smalltalk class library is distributed in the hope that it will be
+| useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
+| MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Lesser
+| General Public License for more details.
+|
+| You should have received a copy of the GNU Lesser General Public License
+| along with the GNU Smalltalk class library; see the file COPYING.LIB.
+| If not, write to the Free Software Foundation, 59 Temple Place - Suite
+| 330, Boston, MA 02110-1301, USA.
+|
+ ======================================================================"
+
+
+
+Sockets.IPAddress extend [
+    determineSourceAddress  [
+        | sourceAddr res |
+        <category: '*Netlink'>
+        "Assuming that self is the destination address determine the
+        source address that will be used."
+        sourceAddr := ByteArray new: 4.
+        res := Netlink fromDestIPv4: address toLocal: sourceAddr.
+        res = 0
+            ifFalse: [^self error: 'Failed to determine source address'].
+        ^self class fromBytes: sourceAddr.
+    ]
+
+    fromDest: destAddress toLocal: localAddress [
+        <category: '*Netlink'>
+        "Given a destination IPv4 Address this function will
+        determine the local source address that would be used.
+        The addresses need to be a ByteArray with four entries."
+        <cCall: 'nl_route_source_ipv4' returning: #int args: #(#byteArray #cObject)>
+    ]
+
+]
diff --git a/packages/netlink/Makefile.am b/packages/netlink/Makefile.am
new file mode 100644
index 0000000..f5c1c0a
--- /dev/null
+++ b/packages/netlink/Makefile.am
@@ -0,0 +1,9 @@
+gst_module_ldflags = -rpath $(moduleexecdir) -release $(VERSION) -module \
+        -no-undefined -export-symbols-regex gst_initModule
+
+moduleexec_LTLIBRARIES = netlink.la
+netlink_la_SOURCES = netlink.c
+netlink_la_LDFLAGS = $(gst_module_ldflags)
+
+AM_CPPFLAGS = -I$(top_srcdir)/libgst -I$(top_srcdir)/lib-src
+
diff --git a/packages/netlink/Makefile.frag b/packages/netlink/Makefile.frag
new file mode 100644
index 0000000..e9cdceb
--- /dev/null
+++ b/packages/netlink/Makefile.frag
@@ -0,0 +1,5 @@
+Netlink_FILES = \
+packages/netlink/Extensions.st packages/netlink/Netlink.st
+$(Netlink_FILES):
+$(srcdir)/packages/netlink/stamp-classes: $(Netlink_FILES)
+ touch $(srcdir)/packages/netlink/stamp-classes
diff --git a/packages/netlink/Netlink.st b/packages/netlink/Netlink.st
new file mode 100644
index 0000000..f6a2e10
--- /dev/null
+++ b/packages/netlink/Netlink.st
@@ -0,0 +1,46 @@
+"======================================================================
+|
+|   Netlink module declarations
+|
+|
+ ======================================================================"
+
+"======================================================================
+|
+| Copyright 2014 Free Software Foundation, Inc.
+| Written by Holger Hans Peter Freyther
+|
+| This file is part of the GNU Smalltalk class library.
+|
+| The GNU Smalltalk class library is free software; you can redistribute it
+| and/or modify it under the terms of the GNU Lesser General Public License
+| as published by the Free Software Foundation; either version 2.1, or (at
+| your option) any later version.
+|
+| The GNU Smalltalk class library is distributed in the hope that it will be
+| useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
+| MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Lesser
+| General Public License for more details.
+|
+| You should have received a copy of the GNU Lesser General Public License
+| along with the GNU Smalltalk class library; see the file COPYING.LIB.
+| If not, write to the Free Software Foundation, 59 Temple Place - Suite
+| 330, Boston, MA 02110-1301, USA.
+|
+ ======================================================================"
+
+
+
+Object subclass: Netlink [
+    <category: 'Netlink'>
+    <comment: 'I help speaking netlink with the kernel. Currently this
+    only includes the routing sub-system but might be extended.'>
+
+    Netlink class >> fromDestIPv4: destAddress toLocal: localAddress [
+        <category: '*Netlink'>
+        "Given a destination IPv4 Address this function will
+        determine the local source address that would be used.
+        The addresses need to be a ByteArray with four entries."
+        <cCall: 'nl_route_source_ipv4' returning: #int args: #(#byteArray #cObject)>
+    ]
+]
diff --git a/packages/netlink/NetlinkTest.st b/packages/netlink/NetlinkTest.st
new file mode 100644
index 0000000..efa1f14
--- /dev/null
+++ b/packages/netlink/NetlinkTest.st
@@ -0,0 +1,41 @@
+"======================================================================
+|
+|   Netlink module declarations
+|
+|
+ ======================================================================"
+
+"======================================================================
+|
+| Copyright 2014 Free Software Foundation, Inc.
+| Written by Holger Hans Peter Freyther
+|
+| This file is part of the GNU Smalltalk class library.
+|
+| The GNU Smalltalk class library is free software; you can redistribute it
+| and/or modify it under the terms of the GNU Lesser General Public License
+| as published by the Free Software Foundation; either version 2.1, or (at
+| your option) any later version.
+|
+| The GNU Smalltalk class library is distributed in the hope that it will be
+| useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
+| MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Lesser
+| General Public License for more details.
+|
+| You should have received a copy of the GNU Lesser General Public License
+| along with the GNU Smalltalk class library; see the file COPYING.LIB.
+| If not, write to the Free Software Foundation, 59 Temple Place - Suite
+| 330, Boston, MA 02110-1301, USA.
+|
+ ======================================================================"
+
+
+TestCase subclass: NetlinkTest [
+    <category: 'Netlink-Test'>
+
+    testIPv4Resolving [
+        | addr |
+        addr := (SocketAddress byName: '127.0.0.10') determineSourceAddress.
+        self assert: addr equals: (IPAddress fromBytes: #[127 0 0 1]).
+    ]
+]
diff --git a/packages/netlink/netlink.c b/packages/netlink/netlink.c
new file mode 100644
index 0000000..1a4ed67
--- /dev/null
+++ b/packages/netlink/netlink.c
@@ -0,0 +1,163 @@
+/***********************************************************************
+ *
+ * Netlink interface definitions for GNU Smalltalk
+ *
+ *
+ ***********************************************************************/
+
+/***********************************************************************
+ *
+ * Copyright 2014 Free Software Foundation, Inc.
+ * Written by Holger Hans Peter Freyther.
+ *
+ * This file is part of GNU Smalltalk.
+ *
+ * GNU Smalltalk is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the Free
+ * Software Foundation; either version 2, or (at your option) any later
+ * version.
+ *
+ * Linking GNU Smalltalk statically or dynamically with other modules is
+ * making a combined work based on GNU Smalltalk.  Thus, the terms and
+ * conditions of the GNU General Public License cover the whole
+ * combination.
+ *
+ * In addition, as a special exception, the Free Software Foundation
+ * give you permission to combine GNU Smalltalk with free software
+ * programs or libraries that are released under the GNU LGPL and with
+ * independent programs running under the GNU Smalltalk virtual machine.
+ *
+ * You may copy and distribute such a system following the terms of the
+ * GNU GPL for GNU Smalltalk and the licenses of the other code
+ * concerned, provided that you include the source code of that other
+ * code when and as the GNU GPL requires distribution of source code.
+ *
+ * Note that people who make modified versions of GNU Smalltalk are not
+ * obligated to grant this special exception for their modified
+ * versions; it is their choice whether to do so.  The GNU General
+ * Public License gives permission to release a modified version without
+ * this exception; this exception also makes it possible to release a
+ * modified version which carries forward this exception.
+ *
+ * GNU Smalltalk is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * GNU Smalltalk; see the file COPYING.  If not, write to the Free Software
+ * Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.  
+ *
+ ***********************************************************************/
+
+
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include <linux/netlink.h>
+#include <linux/rtnetlink.h>
+
+#include <netinet/in.h>
+#include <sys/socket.h>
+
+#include <string.h>
+#include <unistd.h>
+
+#include "gstpub.h"
+
+#define NLMSG_TAIL(nmsg) \
+        ((struct rtattr *) (((char*) (nmsg)) + NLMSG_ALIGN((nmsg)->nlmsg_len)))
+
+static int
+nl_route_source_ipv4(const char *dest, char *source)
+{
+  int fd, rc;
+  struct rtmsg *r;
+  struct rtattr *rta;
+  struct {
+    struct nlmsghdr         n;
+    struct rtmsg            r;
+    char                    buf[1024];
+  } req;
+
+  memset (&req, 0, sizeof (req));
+
+  fd = socket (AF_NETLINK, SOCK_RAW|SOCK_CLOEXEC, NETLINK_ROUTE);
+  if (fd < 0)
+    return -1;
+
+   /* Send a rtmsg and ask for a response */
+  req.n.nlmsg_len = NLMSG_LENGTH (sizeof (struct rtmsg));
+  req.n.nlmsg_flags = NLM_F_REQUEST | NLM_F_ACK;
+  req.n.nlmsg_type = RTM_GETROUTE;
+  req.n.nlmsg_seq = 1;
+
+  /* Prepare the routing request */
+  req.r.rtm_family = AF_INET;
+
+  /* set the dest */
+  rta = NLMSG_TAIL (&req.n);
+  rta->rta_type = RTA_DST;
+  rta->rta_len = RTA_LENGTH (sizeof (struct in_addr));
+  memcpy (RTA_DATA (rta), dest, sizeof (struct in_addr));
+
+  /* update sizes for dest */
+  req.r.rtm_dst_len = sizeof (struct in_addr) * 8;
+  req.n.nlmsg_len = NLMSG_ALIGN (req.n.nlmsg_len) + RTA_ALIGN (rta->rta_len);
+
+  rc = send(fd, &req, req.n.nlmsg_len, 0);
+  if (rc != req.n.nlmsg_len)
+    {
+      close (fd);
+      return -2;
+    }
+
+  /* now receive a response and parse it */
+  rc = recv( fd, &req, sizeof(req), 0);
+  if (rc <= 0)
+    {
+      close (fd);
+      return -3;
+    }
+
+  if (!NLMSG_OK (&req.n, rc) || req.n.nlmsg_type != RTM_NEWROUTE)
+    {
+      close (fd);
+      return -4;
+    }
+
+  r = NLMSG_DATA (&req.n);
+  rc -= NLMSG_LENGTH (sizeof (*r));
+  rta = RTM_RTA (r);
+  while (RTA_OK (rta, rc))
+    {
+      if (rta->rta_type != RTA_PREFSRC)
+        {
+          rta = RTA_NEXT (rta, rc);
+          continue;
+        }
+
+      /* Check if there are enough bytes */
+      if (RTA_PAYLOAD (rta) != sizeof (struct in_addr))
+        continue;
+
+      /* we are done */
+      memcpy(source, RTA_DATA (rta), RTA_PAYLOAD (rta));
+      close (fd);
+      return 0;
+    }
+
+  close (fd);
+  return -5;
+}
+
+
+/* Module initialization function.  */
+
+void
+gst_initModule (VMProxy * proxy)
+{
+  proxy->defineCFunc ("nl_route_source_ipv4", nl_route_source_ipv4);
+}
diff --git a/packages/netlink/package.xml b/packages/netlink/package.xml
new file mode 100644
index 0000000..a58d787
--- /dev/null
+++ b/packages/netlink/package.xml
@@ -0,0 +1,14 @@
+<package>
+    <name>Netlink</name>
+    <namespace>Sockets</namespace>
+    <prereq>Sockets</prereq>
+    <module>netlink</module>
+
+    <filein>Extensions.st</filein>
+    <filein>Netlink.st</filein>
+
+    <test>
+        <sunit>Sockets.NetlinkTest</sunit>
+        <filein>NetlinkTest.st</filein>
+    </test>
+</package>
--
1.9.0


_______________________________________________
help-smalltalk mailing list
[hidden email]
https://lists.gnu.org/mailman/listinfo/help-smalltalk
Reply | Threaded
Open this post in threaded view
|

Re: [PATCH 1/2] libgst: Remove left-over of Process>>#startExecution:

Paolo Bonzini-2
In reply to this post by Holger Freyther
Il 25/03/2014 18:58, Holger Hans Peter Freyther ha scritto:

> Paolo pointed out that there are more left overs and this appears
> to be one of them.
>
> 2014-03-25  Holger Hans Peter Freyther  <[hidden email]>
>
> * sym.c: Remove _gst_start_execution_symbol.
> * sym.h: Remove _gst_start_execution_symbol.
> ---
>  libgst/ChangeLog | 5 +++++
>  libgst/sym.c     | 2 --
>  libgst/sym.h     | 1 -
>  3 files changed, 5 insertions(+), 3 deletions(-)
>
> diff --git a/libgst/ChangeLog b/libgst/ChangeLog
> index a8f5b4e..176a8a3 100644
> --- a/libgst/ChangeLog
> +++ b/libgst/ChangeLog
> @@ -1,3 +1,8 @@
> +2014-03-25  Holger Hans Peter Freyther  <[hidden email]>
> +
> + * sym.c: Remove _gst_start_execution_symbol.
> + * sym.h: Remove _gst_start_execution_symbol.
> +
>  2014-02-10  Holger Hans Peter Freyther  <[hidden email]>
>
>   * input.c: Free memory that has been dynamically allocated.
> diff --git a/libgst/sym.c b/libgst/sym.c
> index bbc3e9d..672309e 100644
> --- a/libgst/sym.c
> +++ b/libgst/sym.c
> @@ -140,7 +140,6 @@ OOP _gst_self_symbol = NULL;
>  OOP _gst_short_symbol = NULL;
>  OOP _gst_smalltalk_symbol = NULL;
>  OOP _gst_smalltalk_namespace_symbol = NULL;
> -OOP _gst_start_execution_symbol = NULL;
>  OOP _gst_string_out_symbol = NULL;
>  OOP _gst_string_symbol = NULL;
>  OOP _gst_super_symbol = NULL;
> @@ -294,7 +293,6 @@ static const symbol_info sym_info[] = {
>    {&_gst_ushort_symbol, "uShort"},
>    {&_gst_smalltalk_symbol, "smalltalk"},
>    {&_gst_smalltalk_namespace_symbol, "Smalltalk"},
> -  {&_gst_start_execution_symbol, "startExecution:"},
>    {&_gst_string_out_symbol, "stringOut"},
>    {&_gst_string_symbol, "string"},
>    {&_gst_super_symbol, "super"},
> diff --git a/libgst/sym.h b/libgst/sym.h
> index 87c1f1c..ab23267 100644
> --- a/libgst/sym.h
> +++ b/libgst/sym.h
> @@ -130,7 +130,6 @@ extern OOP _gst_short_symbol ATTRIBUTE_HIDDEN;
>  extern OOP _gst_ushort_symbol ATTRIBUTE_HIDDEN;
>  extern OOP _gst_smalltalk_symbol ATTRIBUTE_HIDDEN;
>  extern OOP _gst_smalltalk_namespace_symbol ATTRIBUTE_HIDDEN;
> -extern OOP _gst_start_execution_symbol ATTRIBUTE_HIDDEN;
>  extern OOP _gst_string_out_symbol ATTRIBUTE_HIDDEN;
>  extern OOP _gst_string_symbol ATTRIBUTE_HIDDEN;
>  extern OOP _gst_super_symbol ATTRIBUTE_HIDDEN;
>

Thanks!

Paolo

_______________________________________________
help-smalltalk mailing list
[hidden email]
https://lists.gnu.org/mailman/listinfo/help-smalltalk
Reply | Threaded
Open this post in threaded view
|

Re: [PATCH 2/2] netlink: Introduce a Linux/Netlink extension for GNU Smalltalk

Paolo Bonzini-2
In reply to this post by Holger Freyther
Il 25/03/2014 18:58, Holger Hans Peter Freyther ha scritto:

>
> +Sockets.IPAddress extend [
> +    determineSourceAddress  [
> +        | sourceAddr res |
> +        <category: '*Netlink'>
> +        "Assuming that self is the destination address determine the
> +        source address that will be used."
> +        sourceAddr := ByteArray new: 4.
> +        res := Netlink fromDestIPv4: address toLocal: sourceAddr.
> +        res = 0
> +            ifFalse: [^self error: 'Failed to determine source address'].
> +        ^self class fromBytes: sourceAddr.
> +    ]
> +
> +    fromDest: destAddress toLocal: localAddress [
> +        <category: '*Netlink'>
> +        "Given a destination IPv4 Address this function will
> +        determine the local source address that would be used.
> +        The addresses need to be a ByteArray with four entries."
> +        <cCall: 'nl_route_source_ipv4' returning: #int args: #(#byteArray #cObject)>
> +    ]
> +

Is the call-out a remnant of older code?

Paolo

_______________________________________________
help-smalltalk mailing list
[hidden email]
https://lists.gnu.org/mailman/listinfo/help-smalltalk