2007-12-06 22:26:38 +08:00
|
|
|
/*
|
|
|
|
* TFRC: main module holding the pieces of the TFRC library together
|
|
|
|
*
|
|
|
|
* Copyright (c) 2007 The University of Aberdeen, Scotland, UK
|
|
|
|
* Copyright (c) 2007 Arnaldo Carvalho de Melo <acme@redhat.com>
|
|
|
|
*/
|
|
|
|
#include <linux/module.h>
|
|
|
|
#include <linux/moduleparam.h>
|
|
|
|
#include "tfrc.h"
|
|
|
|
|
|
|
|
#ifdef CONFIG_IP_DCCP_TFRC_DEBUG
|
|
|
|
int tfrc_debug;
|
|
|
|
module_param(tfrc_debug, bool, 0444);
|
|
|
|
MODULE_PARM_DESC(tfrc_debug, "Enable debug messages");
|
|
|
|
#endif
|
|
|
|
|
2007-12-12 22:24:49 +08:00
|
|
|
extern int tfrc_tx_packet_history_init(void);
|
|
|
|
extern void tfrc_tx_packet_history_exit(void);
|
|
|
|
extern int tfrc_rx_packet_history_init(void);
|
|
|
|
extern void tfrc_rx_packet_history_exit(void);
|
|
|
|
|
2007-12-13 00:06:14 +08:00
|
|
|
extern int tfrc_li_init(void);
|
|
|
|
extern void tfrc_li_exit(void);
|
2007-12-06 22:26:38 +08:00
|
|
|
|
|
|
|
static int __init tfrc_module_init(void)
|
|
|
|
{
|
2007-12-13 00:06:14 +08:00
|
|
|
int rc = tfrc_li_init();
|
2007-12-06 22:26:38 +08:00
|
|
|
|
2007-12-12 22:24:49 +08:00
|
|
|
if (rc)
|
|
|
|
goto out;
|
|
|
|
|
|
|
|
rc = tfrc_tx_packet_history_init();
|
|
|
|
if (rc)
|
|
|
|
goto out_free_loss_intervals;
|
2007-12-06 22:26:38 +08:00
|
|
|
|
2007-12-12 22:24:49 +08:00
|
|
|
rc = tfrc_rx_packet_history_init();
|
|
|
|
if (rc)
|
|
|
|
goto out_free_tx_history;
|
|
|
|
return 0;
|
|
|
|
|
|
|
|
out_free_tx_history:
|
|
|
|
tfrc_tx_packet_history_exit();
|
|
|
|
out_free_loss_intervals:
|
2007-12-13 00:06:14 +08:00
|
|
|
tfrc_li_exit();
|
2007-12-12 22:24:49 +08:00
|
|
|
out:
|
2007-12-06 22:26:38 +08:00
|
|
|
return rc;
|
|
|
|
}
|
|
|
|
|
|
|
|
static void __exit tfrc_module_exit(void)
|
|
|
|
{
|
2007-12-12 22:24:49 +08:00
|
|
|
tfrc_rx_packet_history_exit();
|
|
|
|
tfrc_tx_packet_history_exit();
|
2007-12-13 00:06:14 +08:00
|
|
|
tfrc_li_exit();
|
2007-12-06 22:26:38 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
module_init(tfrc_module_init);
|
|
|
|
module_exit(tfrc_module_exit);
|
|
|
|
|
|
|
|
MODULE_AUTHOR("Gerrit Renker <gerrit@erg.abdn.ac.uk>, "
|
|
|
|
"Ian McDonald <ian.mcdonald@jandi.co.nz>, "
|
|
|
|
"Arnaldo Carvalho de Melo <acme@redhat.com>");
|
|
|
|
MODULE_DESCRIPTION("DCCP TFRC library");
|
|
|
|
MODULE_LICENSE("GPL");
|