rmdp/ 40775 423 0 0 6646660110 10331 5ustar luigiwheelrmdp/Makefile100644 423 0 1456 6635474550 12103 0ustar luigiwheel# New ports collection makefile for: rlc # Version required: none # Date created: Thu Nov 5 16:24:09 GMT 1998 # Whom: luigi@iet.unipi.it # # $Id: Makefile,v 1.1$ # DISTNAME= rmdp-last PKGNAME= rmdp-0.95 CATEGORIES= mbone MASTER_SITES= http://www.cs.ucl.ac.uk/external/l.vicisano/ EXTRACT_SUFX= .tgz MAINTAINER= luigi@iet.unipi.it LIB_DEPENDS= rlc:${PORTSDIR}/mbone/rlc USE_GMAKE= yes WRKSRC= ${WRKDIR}/rmdp OBJSRC= ${WRKSRC}/obj/FreeBSD #MAN1= rmdp.3 post-extract: @cp -p ${WRKSRC}/Makefile.in ${WRKSRC}/Makefile do-install: @${INSTALL_DATA} ${WRKSRC}/rmdpif.h ${PREFIX}/include @${INSTALL_DATA} ${OBJSRC}/librmdp.a ${PREFIX}/lib @${INSTALL_PROGRAM} ${OBJSRC}/sen-sample ${PREFIX}/bin @${INSTALL_PROGRAM} ${OBJSRC}/rec-sample ${PREFIX}/bin .include rmdp/files/ 40755 423 0 0 6646660106 11436 5ustar luigiwheelrmdp/files/md5100644 423 0 67 6620367323 12103 0ustar luigiwheelMD5 (rmdp-last.tgz) = 61afdb180776386cba08b1f8b8b6f9d7 rmdp/files/linux.build100644 423 7 256 6646657667 13373 0ustar luigibin#!/bin/sh # build file for linux -- mkdir work cd work tar xvzf ../../rmdp-last.tgz cd rmdp cp Makefile.in Makefile for i in ../../patches/patch-* do patch < $i done make rmdp/patches/ 40755 423 0 0 6635527212 11761 5ustar luigiwheelrmdp/patches/patch-aa100644 423 0 2107 6635474647 13474 0ustar luigiwheel--- Makefile.orig Tue Aug 25 18:23:16 1998 +++ Makefile Tue Dec 15 16:00:27 1998 @@ -1,13 +1,13 @@ -DEFINES=-D$(OSTYPE) -DOSMVER=$(OSMVER) -DHAVE_UI #-DDEBUGE +DEFINES=-D$(OSTYPE) -DOSMVER=$(OSMVER) # -DHAVE_UI #-DDEBUGE # -DHAVE_UI define this to have UI support CHECK= -fbounds-checking -lcheck -CFLAGS=-g -Wall -O2 $(DEFINES) $(RLC_INCLUDE) -LDFLAGS=-Wl,-Bstatic +CFLAGS=-Wall -O2 $(DEFINES) $(RLC_INCLUDE) -I/usr/local/include +#LDFLAGS=-Wl,-Bstatic # -pg -CC=gcc #${CHECK} +#CC=gcc #${CHECK} OBJDIR = obj/$(OSTYPE) -LIBS= $(RLC_LIB) $(TK_LIB) $(TCL_LIB) $(X11_LIB) $(OTHER_LIBS) +LIBS= $(RLC_LIB) $(OTHER_LIBS) -L/usr/local/lib -lrlc LIB_C_SRCS= sender.c receiver.c layers.c init.c error.c fec.c utils.c rmdp.c LIB_H_SRCS= rmdpif.h rmdp.h sender.h init.h layers.h \ fec.h error.h utils.h receiver.h compat.h receiver.h agent.h @@ -41,7 +41,7 @@ sample: sh makescript x-sample -x-all: $(OBJDIR) $(OBJDIR)/librmdp.a +x-all: $(OBJDIR) $(OBJDIR)/librmdp.a $(OBJDIR)/sen-sample $(OBJDIR)/rec-sample $(OBJDIR)/librmdp.a: $(LIB_O) $(OBJDIR)/ui-tcl.o - rm $(OBJDIR)/librmdp.a rmdp/patches/patch-ab100644 423 0 3211 6635526506 13462 0ustar luigiwheel--- sen-sample.c.orig Wed Aug 12 20:54:24 1998 +++ sen-sample.c Tue Dec 15 19:39:06 1998 @@ -11,6 +11,7 @@ #include #endif +#include "compat.h" #include #include "rmdpif.h" @@ -73,14 +74,22 @@ rmdp_tx_packet_t tx_f; - + u_int32_t sid; extern char *optarg; extern int optind; + /* parse command line... */ - while ((i = getopt(argc,argv,"t:d:f:i:I")) != EOF) { + /* I've added the -s option to deal with mgp sender reload */ + while ((i = getopt(argc,argv,"t:d:f:i:Is:r:")) != EOF) { switch(i) { + case 's': + sid=atoi(optarg); + pid=sid; + if (sid < 0) badcmdline(optarg); + break; + case 'd': /* data addr/port */ strncpy(dataaddr, optarg, 256); haveaddr = 1; @@ -99,6 +108,10 @@ if ((fd = open_n_check(optarg)) < 0) badcmdline(optarg); break; + case 'r': + base_rate=atoi(optarg)*1024; + if (base_rate<=0) badcmdline(optarg); + break; case '?': errflg++; } @@ -145,8 +158,8 @@ if (nostop) { unsigned long left = rmdp_get_left (rmdp_i); - if ((ret = rmdp_incr_left (rmdp_i, - (unsigned long)0xffffffff - left)) < 0) { + if ((ret = rmdp_incr_left (rmdp_i, 2000000000)) < 0) { + /*(unsigned long)0xffffffff - left -1)) < 0) {*/ char *c; ret = rlc_error_info(&c); rmdp_my_error (-1, @@ -181,7 +194,7 @@ parml.t = p; /* setup a rlc sender instance */ - if ((ret = rlc_i = rlc_new(ISSENDER)) < 0 || + if ((ret = rlc_i = rlc_new(ISSENDER, sid)) < 0 || (ret = rlc_set_addr (rlc_i, &taddr)) < 0 || (ret = rlc_attach (rlc_i, rmdp_i, (void *)tx_f)) < 0 || (ret = rlc_tx_setup(rlc_i, &parml)) < 0 || rmdp/patches/patch-ac100644 423 0 14267 6635526526 13522 0ustar luigiwheel--- rec-sample.c.orig Wed Aug 12 20:54:34 1998 +++ rec-sample.c Tue Dec 15 19:38:55 1998 @@ -1,3 +1,10 @@ +/* mgp_mcast_receiver + + Internal data file multicast reception main program. + + Adapted from rec-sample of last rmdp release +*/ + #include #include #include @@ -11,28 +18,10 @@ #include #endif +#include "compat.h" #include #include "rmdpif.h" -void -badcmdline(char *arg) -{ - rmdp_my_error(-1, - "Bad argument %s\nCommand line:\n\t rec-sample [options]\n" - "options:\n" - "\t-f \n" - "\t-d \n" - "\t-t \n" - "\t-i \n" - "\t-C \n" - "\t-x \n" - "\t-g \n" - "\t-e \n" - "\t-p \n" - /* "\t-n \n" */ - , - arg); -} int open_n_check(char *filn) { @@ -51,40 +40,15 @@ int rlc_i; /* rlc instance id */ int rmdp_i; /* rmdp instance id */ int fd = 1; /* output file */ -int chosefile = 0; + char *sessname=NULL; -char *geometry=NULL; /* this handle the termination of * the current reception */ void reception_end(int rmdp_i, int success) { - if (success >= 0 && chosefile) { -#ifdef HAVE_UI - char *ret = NULL; - int res; - if (sessname) - res = rlc_gui_tcl_exec (rlc_i, &ret, - "tk_getSaveFile -title {%s}", sessname); - else - res = rlc_gui_tcl_exec (rlc_i, &ret, - "tk_getSaveFile -title \"RMDP\""); - if (res >= 0 && ret != NULL) { - if (ret[0] != '\0') { - if ((fd = open_n_check(ret)) >= 0) { - rmdp_set_io(rmdp_i, fd); - } else - rmdp_my_error (rmdp_i, - "Error opening out file (%s)\n", ret); - } else { - rmdp_my_error (rmdp_i, "No file selected!\n"); - } - free(ret); - } else { - rmdp_my_error (rmdp_i, "rlc gui error|\n"); - } -#endif + if (success >= 0) { } else if (success < 0) { rmdp_my_error (rmdp_i, "Decoding error ? \n"); } @@ -101,6 +65,8 @@ int haveaddr = 0; int isreceiver = 1; + int multifeed=1; + int ret; char *ev_f = NULL , *po_f = NULL ; @@ -114,17 +80,18 @@ addr_list_t taddr; rmdp_addr_t adds; - int errflg = 0, i; + int i; rmdp_rx_packet_t rx_f; + extern char *optarg; extern int optind; /* parse command line... */ - while ((i = getopt(argc,argv,"g:i:t:d:f:C:e:p:x")) != EOF) + while ((i = getopt(argc,argv,"t:d:f:")) != EOF) switch(i) { case 'd': /* data addr/port */ strncpy(dataaddr, optarg, 256); @@ -132,47 +99,22 @@ break; case 't': /* TTL */ ttl = atoi(optarg); - if (ttl <= 0 || ttl > 255) badcmdline(optarg); - break; - case 'i': /* pid */ - pid = atoi(optarg); + if (ttl <= 0 || ttl > 255) exit(-1); break; case 'f': /* output file */ if ((fd = open_n_check(optarg)) <= 0) - badcmdline(optarg); - break; - case 'C': /* session name */ - if ((sessname = malloc(strlen(optarg)+1)) == NULL) - break; - strcpy (sessname, optarg); -fprintf(stderr, "%s\n", sessname); - break; - case 'g': /* session name */ - if ((geometry = malloc(strlen(optarg)+1)) == NULL) - break; - strcpy (geometry, optarg); + exit(-1); break; - case 'x': /* session name */ - chosefile = 1; - break; - case 'e': /* event log file */ - ev_f = (char *)calloc(strlen(optarg)+1, sizeof(char)); - strncpy(ev_f, optarg, strlen(optarg)+1); - break; - case 'p': /* poll log file */ - po_f = (char *)calloc(strlen(optarg)+1, sizeof(char)); - strncpy(po_f, optarg, strlen(optarg)+1); - break; - case '?': - errflg++; + default: exit(-1); + } - if (errflg) - badcmdline("?"); argc -= optind; argv += optind; +receiver: + if (!haveaddr) rmdp_my_error(-1, "must provide destination address"); @@ -213,6 +155,13 @@ "Error %d in rmdp_set_end_callback (%s)\n", ret, c); } + if (multifeed && (ret = rmdp_rx_enable_multifeed(rmdp_i, 1)) < 0) { + char *c; + ret = rlc_error_info(&c); + rmdp_my_error (-1, + "Error %d in rmdp_rx_enable_multifeed (%s)\n", ret, c); + } + /* get data reception handler function from rmdp */ if ((ret = rmdp_get_f(rmdp_i, (void **)(&rx_f))) < 0) { char *c; @@ -227,7 +176,7 @@ taddr.port = port; /* setup a rlc receiver instance */ - if ((ret = rlc_i = rlc_new (isreceiver)) < 0 || + if ((ret = rlc_i = rlc_new (isreceiver, 0)) < 0 || (ret = rlc_set_addr (rlc_i, &taddr)) < 0 || (ret = rlc_attach (rlc_i, rmdp_i, (void *)rx_f)) < 0 ) { char *c; @@ -236,16 +185,7 @@ rmdp_my_error(-1, "error %d in rlc_rx_setup (%s)\n", ret, c); } -#ifdef HAVE_UI - if (geometry) - rlc_gui_geometry (rlc_i, geometry); - if ((ret = rlc_gui_enable(rlc_i)) < 0) { - char *c; - ret = rlc_error_info(&c); - rmdp_delete(rmdp_i); - rmdp_my_error(-1, "error %d in rlc_gui_enable (%s)\n", ret, c); - } -#endif + /* setup rlc idle watchdog */ if ((ret = rlc_rx_set_watchdog(rlc_i, NULL, 0)) < 0) { @@ -261,21 +201,7 @@ rmdp_my_error (-1, "Error %d in protocol initialization (%s)\n", ret, c); } -#ifdef HAVE_UI - /* enable UI in rmdp */ - if ((ret = rmdp_enable_gui(rmdp_i)) < 0) { - char *c; - ret = rlc_error_info(&c); - rmdp_my_error (-1, - "Error %d in protocol initialization (%s)\n", ret, c); - } else if (sessname != NULL && - (ret = rmdp_set_name (rmdp_i, sessname)) < 0) { - char *c; - ret = rlc_error_info(&c); - rmdp_my_error (-1, - "Error %d in protocol initialization (%s)\n", ret, c); - } -#endif + /* possibly setup rlc log facility */ if (ev_f || po_f) @@ -290,7 +216,19 @@ "error %d in rlc_rx_start (%s)\n", ret, c); } - while (rlc_getevent(1)!=EV_TERMINATE); + i=rlc_getevent(1); + while (i!=EV_TERMINATE && i!=EV_NEW_TRANSMISSION) + i=rlc_getevent(1); + + if (i==EV_NEW_TRANSMISSION) { + if (rmdp_delete(rmdp_i)!=0) { + fprintf(stderr, "Error removing rmdp instance\n"); + exit(1); + } + rlc_abort(rlc_i); + fprintf(stderr, "New transmission detected ... reloading\n"); + goto receiver; + } exit(0); } rmdp/patches/patch-ad100644 0 0 1765 6634710110 13262 0ustar rootwheel--- Makefile.FreeBSD.orig Tue Aug 11 12:41:26 1998 +++ Makefile.FreeBSD Sun Dec 13 10:58:53 1998 @@ -2,8 +2,8 @@ # Personalize according to your environment. ## -RLC_INCLUDE= -I../rlc -RLC_LIB= -L../rlc/$(OBJDIR) -lrlc +#RLC_INCLUDE= -I../rlc +#RLC_LIB= -L../rlc/$(OBJDIR) -lrlc # sloaris need also: -lsocket -lnsl -ldl OTHER_LIBS= -lm @@ -12,16 +12,16 @@ ## The following only if you compile with -DHAVE_UI ### # in solaris : -I/usr/openwin/include/ -X11_INCLUDE= -I/usr/X11R6/include/ -TCL_INCLUDE= -I//usr/local/include/tcl8.0 -TK_INCLUDE= -I/usr/local/include/tk8.0 +#X11_INCLUDE= -I/usr/X11R6/include/ +#TCL_INCLUDE= -I//usr/local/include/tcl8.0 +#TK_INCLUDE= -I/usr/local/include/tk8.0 ### ## The following only if you compile the samples with -DHAVE_UI ### -TCL_LIB= -L//usr/local/lib/ -ltcl80 -TK_LIB= -L/usr/local/lib/ -ltk80 -X11_LIB= -L/usr/X11R6/lib -lX11 +#TCL_LIB= -L//usr/local/lib/ -ltcl80 +#TK_LIB= -L/usr/local/lib/ -ltk80 +#X11_LIB= -L/usr/X11R6/lib -lX11 include Makefile rmdp/patches/patch-ae100664 0 0 1713 6635116765 13277 0ustar rootwheel--- receiver.c.orig Mon Aug 31 17:08:10 1998 +++ receiver.c Sun Dec 13 15:25:04 1998 @@ -131,7 +131,7 @@ } } -/* reveived paket handling */ +/* received packet handling */ void _rmdp_rx_packet(int ides, int lay, char flags, char *pkt, int size) @@ -257,16 +257,25 @@ if (inst->countdata[blk_n] == inst->k) { inst->missingblocks--; } -#ifdef HAVE_UI - if (inst->have_gui) { + { int part = inst->netgot * 50 / (inst->B * inst->k); if (part > inst->recpercent) { inst->recpercent = part; +#ifdef HAVE_UI + if (inst->have_gui) rlc_gui_tcl_exec(inst->rlc_pi, NULL, "prog_percent %f", part/50.0); - } +#else + { char st[128] ; int i; + sprintf(st, "%3d%% ", 2*part); + for (i = 0 ; i < part ; i++) + st[i+6] = '#' ; + st[part+6] = '\0'; + fprintf(stderr, "\r%s\r", st); } #endif + } + } } else { inst->duppackets++; free (pkt); /* is it OK? XXX */ rmdp/patches/patch-af100664 0 0 1406 6635524673 13300 0ustar rootwheel--- Makefile.Linux.orig Tue Dec 15 18:14:07 1998 +++ Makefile.Linux Tue Dec 15 18:15:13 1998 @@ -4,8 +4,8 @@ # Personalize according to your environment. ## -RLC_INCLUDE= -I../rlc -RLC_LIB= -L../rlc/$(OBJDIR) -lrlc +RLC_INCLUDE= -I../../../rlc/work/rlc +RLC_LIB= -L../../../rlc/work/rlc -lrlc # sloaris need also: -lsocket -lnsl -ldl OTHER_LIBS= -lm @@ -13,11 +13,5 @@ ### ## The following only if you compile with -DHAVE_UI ### -X11_INCLUDE= -I/usr/X11R6/include/ -X11_LIB= -L/usr/X11R6/lib/ -lX11 -TCL_INCLUDE= -I/cs/research/mice/starship/common/linux/include/ -TK_INCLUDE= -I/cs/research/mice/starship/common/linux/include/ -TCL_LIB= -L/cs/research/mice/starship/common/linux/lib/ -ltcl8.0 -TK_LIB= -L/cs/research/mice/starship/common/linux/lib/ -ltk8.0 rmdp/patches/patch-ag100664 0 0 310 6635526545 13252 0ustar rootwheel--- compat.h.orig Sun Apr 19 17:13:35 1998 +++ compat.h Tue Dec 15 19:39:27 1998 @@ -22,6 +22,7 @@ #ifdef SunOS #include +typedef unsigned int u_int32_t #endif #ifdef __FreeBSD__ rmdp/patches/patch-ah100664 0 0 1737 6635527212 13301 0ustar rootwheel--- Makefile.SunOS.orig Tue Dec 15 19:45:34 1998 +++ Makefile.SunOS Tue Dec 15 19:46:08 1998 @@ -2,27 +2,11 @@ # Personalize according to your environment. ## -RLC_INCLUDE= -I../rlc -RLC_LIB= -L../rlc/$(OBJDIR) -lrlc +RLC_INCLUDE= -I../../../rlc/work/rlc +RLC_LIB= -L../../../rlc/work/rlc -lrlc # sloaris need also: -lsocket -lnsl -ldl OTHER_LIBS= -Wl,-Bdynamic -lm -lsocket -lnsl -ldl -#OTHER_LIBS= -lm -lsocket -lnsl -Wl,-Bdynamic -ldl - -### -## The following only if you compile with -DHAVE_UI -### -# in solaris : -I/usr/openwin/include/ -X11_INCLUDE= -I/usr/openwin/include/ -TCL_INCLUDE= -I/cs/research/mice/starship/common/solaris/include/ -TK_INCLUDE= -I/cs/research/mice/starship/common/solaris/include/ - -### -## The following only if you compile the samples with -DHAVE_UI -### -TCL_LIB= -L/cs/research/mice/starship/common/solaris/lib -ltcl8.0 -TK_LIB= -L/cs/research/mice/starship/common/solaris/lib -ltk8.0 -X11_LIB= -Wl,-Bdynamic -lX11 - +CC=gcc include Makefile rmdp/pkg/ 40755 423 0 0 6620350425 11105 5ustar luigiwheelrmdp/pkg/COMMENT100644 423 0 72 6635474341 12200 0ustar luigiwheelA FEC-based reliable file transfer library for multicast. rmdp/pkg/DESCR100644 423 0 446 6634710321 11751 0ustar luigiwheelRMDP is a library to support the development of reliable-multicast applications based on FEC. It is meant to be used together with the RLC congestion control library, which works using a layered transmission scheme. Documentation is available at http://www.iet.unipi.it/~luigi/research.html/ rmdp/pkg/PLIST100644 423 0 75 6623075053 11766 0ustar luigiwheelinclude/rmdpif.h lib/librmdp.a bin/sen-sample bin/rec-sample