unofficial mirror of guile-devel@gnu.org 
 help / color / mirror / Atom feed
From: Michael Tuexen <Michael.Tuexen@lurchi.franken.de>
Cc: guile-devel@gnu.org
Subject: Re: Initial SCTP support for the upcoming 1.6.5 release
Date: Fri, 20 Aug 2004 20:18:33 +0200	[thread overview]
Message-ID: <58846D32-F2D5-11D8-9904-000D932C78D8@lurchi.franken.de> (raw)
In-Reply-To: <87ekm67wis.fsf@trouble.defaultvalue.org>

Hi Rob,

I got the external library from Marius compiled and
wrote sctp.scm such that the net_sctp_init can
be called and the constants can be accessed.

But I have two functions defined, one of them is defined
by

SCM_DEFINE (net_sctp_recvmsg, "sctp-recvmsg!", 2, 2, 0,
             (SCM sock, SCM str, SCM start, SCM end),
	    "Return data from the socket port @var{sock} and also\n"
	    "information about where the data was received from.\n"
	    "@var{sock} must already be bound to the address from which\n"
	    "data is to be received.  @code{str}, is a string into which the\n"
	    "data will be written.  The size of @var{str} limits the amount\n"
	    "of data which can be received: in the case of packet protocols,\n"
	    "if a packet larger than this limit is encountered then some\n"
	    "data will be irrevocably lost.\n\n"
	    "The value returned is a list containing:\n"
	    "- the number of bytes read from the socket\n"
	    "- an address object in the same form as returned by 
@code{accept}\n"
	    "- the flags returned by the sctp_recvmsg call\n"
	    "- a list containing the SID, SSN, PPID, TSN and CUM_TSN\n"
	    "The @var{start} and @var{end} arguments specify a substring of\n"
	    "@var{str} to which the data should be written.\n\n"
	    "Note that the data is read directly from the socket file\n"
	    "descriptor: any unread buffered port data is ignored.")
#define FUNC_NAME s_net_sctp_recvmsg
{
   int rv;
....
   return scm_list_4 (SCM_MAKINUM (rv), address, SCM_MAKINUM (flg), 
s_sinfo);
}
#undef FUNC_NAME


How can I access this function from scheme?


Another question:
I need
ipv6_net_to_num
scm_addr_vector
scm_fill_sockaddr
which are declared static in socket.c. Can they made available and not
be declared static? If not, I need to define them again, which is not
very elegant.

And the last question:
Could the setsockopt and getsockopt functions be extended such that
they support an arbitrary length opt_value? This is the way they are
defined in C. What should the scheme type for the opt_value? A string?

Thank you very much for your help.

Best regards
Michael

On Aug 16, 2004, at 8:44 PM, Rob Browning wrote:

> Michael Tuexen <Michael.Tuexen@lurchi.franken.de> writes:
>
>> I'm trying to build the SCTP support as a loadable module.
>>
>> Is there any documentation available (or an example) where
>> I can figure out how I can solve the questions described
>> below.
>>
>> I looked in the guile sources, but only found modules defined
>> in scheme...
>
> In general, C-only modules are deprecated.  The recommendation is that
> you create a small .scm file for your module, and then have that load
> your shared library and export your symbols, i.e.:
>
>   (define-module (pcre))
>   ;; exports at end of file.
>
>   (let ((lib "libguile-pcre-v-1")
>         (init-func "libguile_pcre_init"))
>     (if (string=? (substring (version) 0 3) "1.4")
>         (dynamic-call init-func (dynamic-link lib))
>         (load-extension lib init-func)))
>
>   ;; make any scheme side defines you that want to here.
>
>   ;; export things here (though you could also do this above, or in
>   ;; the define-module statement)
>
>   ;; these exports will often be symbols that were defined during your
>   ;; _init function above
>
>   (export PCRE_MAJOR)
>   (export PCRE_MINOR)
>   ...
>
> Now, presuming that your .scm file is in the %load-path (via
> GUILE_LOAD_PATH, or whatever), and your shared library is in the
> LD_LIBRARY_PATH (or default ld.so locations), then (use-modules
> (pcre)) should work just fine.
>
> -- 
> Rob Browning
> rlb @defaultvalue.org and @debian.org; previously @cs.utexas.edu
> GPG starting 2002-11-03 = 14DD 432F AE39 534D B592  F9A0 25C8 D377 
> 8C7E 73A4
>



_______________________________________________
Guile-devel mailing list
Guile-devel@gnu.org
http://lists.gnu.org/mailman/listinfo/guile-devel


  reply	other threads:[~2004-08-20 18:18 UTC|newest]

Thread overview: 25+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2004-08-10 18:26 Initial SCTP support for the upcoming 1.6.5 release Michael Tuexen
2004-08-11 12:29 ` Michael Tuexen
2004-08-13 13:40   ` Marius Vollmer
2004-08-13 20:27     ` Michael Tuexen
2004-08-24 14:15       ` Marius Vollmer
2004-08-24 17:35         ` Michael Tuexen
2004-09-08 15:03           ` Marius Vollmer
2004-09-08 15:34             ` Michael Tuexen
2004-08-14  9:59     ` Michael Tuexen
2004-08-16  0:40       ` Kevin Ryde
2004-08-16 10:42         ` Michael Tuexen
2004-08-17 23:46           ` Kevin Ryde
2004-08-19 18:34             ` Michael Tuexen
2004-08-20  1:13               ` Kevin Ryde
2004-08-20  7:57                 ` Michael Tuexen
2004-08-16 17:02       ` Michael Tuexen
2004-08-16 18:44         ` Rob Browning
2004-08-20 18:18           ` Michael Tuexen [this message]
2004-08-23  0:58             ` Kevin Ryde
2004-08-23 19:54               ` Michael Tuexen
2004-08-24  0:57                 ` Kevin Ryde
2004-08-24 11:27                   ` Michael Tuexen
2004-08-24 12:46                     ` Michael Tuexen
2004-08-24 14:24                       ` Marius Vollmer
2004-08-24 18:22                         ` Michael Tuexen

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://www.gnu.org/software/guile/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=58846D32-F2D5-11D8-9904-000D932C78D8@lurchi.franken.de \
    --to=michael.tuexen@lurchi.franken.de \
    --cc=guile-devel@gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).