Gerrit Renker | c40616c | 2007-12-06 12:26:38 -0200 | [diff] [blame] | 1 | /* |
| 2 | * TFRC: main module holding the pieces of the TFRC library together |
| 3 | * |
| 4 | * Copyright (c) 2007 The University of Aberdeen, Scotland, UK |
| 5 | * Copyright (c) 2007 Arnaldo Carvalho de Melo <acme@redhat.com> |
| 6 | */ |
| 7 | #include <linux/module.h> |
| 8 | #include <linux/moduleparam.h> |
| 9 | #include "tfrc.h" |
| 10 | |
| 11 | #ifdef CONFIG_IP_DCCP_TFRC_DEBUG |
| 12 | int tfrc_debug; |
| 13 | module_param(tfrc_debug, bool, 0444); |
| 14 | MODULE_PARM_DESC(tfrc_debug, "Enable debug messages"); |
| 15 | #endif |
| 16 | |
Gerrit Renker | df8f83f | 2007-12-12 12:24:49 -0200 | [diff] [blame] | 17 | extern int tfrc_tx_packet_history_init(void); |
| 18 | extern void tfrc_tx_packet_history_exit(void); |
| 19 | extern int tfrc_rx_packet_history_init(void); |
| 20 | extern void tfrc_rx_packet_history_exit(void); |
| 21 | |
Gerrit Renker | 954c2db | 2007-12-12 14:06:14 -0200 | [diff] [blame^] | 22 | extern int tfrc_li_init(void); |
| 23 | extern void tfrc_li_exit(void); |
Gerrit Renker | c40616c | 2007-12-06 12:26:38 -0200 | [diff] [blame] | 24 | |
| 25 | static int __init tfrc_module_init(void) |
| 26 | { |
Gerrit Renker | 954c2db | 2007-12-12 14:06:14 -0200 | [diff] [blame^] | 27 | int rc = tfrc_li_init(); |
Gerrit Renker | c40616c | 2007-12-06 12:26:38 -0200 | [diff] [blame] | 28 | |
Gerrit Renker | df8f83f | 2007-12-12 12:24:49 -0200 | [diff] [blame] | 29 | if (rc) |
| 30 | goto out; |
Gerrit Renker | c40616c | 2007-12-06 12:26:38 -0200 | [diff] [blame] | 31 | |
Gerrit Renker | df8f83f | 2007-12-12 12:24:49 -0200 | [diff] [blame] | 32 | rc = tfrc_tx_packet_history_init(); |
| 33 | if (rc) |
| 34 | goto out_free_loss_intervals; |
| 35 | |
| 36 | rc = tfrc_rx_packet_history_init(); |
| 37 | if (rc) |
| 38 | goto out_free_tx_history; |
| 39 | return 0; |
| 40 | |
| 41 | out_free_tx_history: |
| 42 | tfrc_tx_packet_history_exit(); |
| 43 | out_free_loss_intervals: |
Gerrit Renker | 954c2db | 2007-12-12 14:06:14 -0200 | [diff] [blame^] | 44 | tfrc_li_exit(); |
Gerrit Renker | df8f83f | 2007-12-12 12:24:49 -0200 | [diff] [blame] | 45 | out: |
Gerrit Renker | c40616c | 2007-12-06 12:26:38 -0200 | [diff] [blame] | 46 | return rc; |
| 47 | } |
| 48 | |
| 49 | static void __exit tfrc_module_exit(void) |
| 50 | { |
Gerrit Renker | df8f83f | 2007-12-12 12:24:49 -0200 | [diff] [blame] | 51 | tfrc_rx_packet_history_exit(); |
| 52 | tfrc_tx_packet_history_exit(); |
Gerrit Renker | 954c2db | 2007-12-12 14:06:14 -0200 | [diff] [blame^] | 53 | tfrc_li_exit(); |
Gerrit Renker | c40616c | 2007-12-06 12:26:38 -0200 | [diff] [blame] | 54 | } |
| 55 | |
| 56 | module_init(tfrc_module_init); |
| 57 | module_exit(tfrc_module_exit); |
| 58 | |
| 59 | MODULE_AUTHOR("Gerrit Renker <gerrit@erg.abdn.ac.uk>, " |
| 60 | "Ian McDonald <ian.mcdonald@jandi.co.nz>, " |
| 61 | "Arnaldo Carvalho de Melo <acme@redhat.com>"); |
| 62 | MODULE_DESCRIPTION("DCCP TFRC library"); |
| 63 | MODULE_LICENSE("GPL"); |