diff --git a/config/rootfiles/common/mISDNuser b/config/rootfiles/common/mISDNuser
new file mode 100644
index 000000000..6e5b152cf
--- /dev/null
+++ b/config/rootfiles/common/mISDNuser
@@ -0,0 +1,18 @@
+etc/rc.d/init.d/mISDN
+usr/bin/l1oipctrl
+usr/bin/misdn_bridge
+usr/bin/misdn_cleanl2
+usr/bin/misdn_info
+usr/bin/misdn_log
+usr/bin/misdn_rename
+#usr/include/mISDNuser
+#usr/include/mISDNuser/compat_af_isdn.h
+#usr/include/mISDNuser/isdn_net.h
+#usr/include/mISDNuser/l3dss1.h
+#usr/include/mISDNuser/mISDNif.h
+#usr/include/mISDNuser/mbuffer.h
+#usr/include/mISDNuser/mlayer3.h
+#usr/include/mISDNuser/q931.h
+#usr/lib/libmisdn.a
+usr/lib/libmisdn.so
+#usr/lib/libmisdn_pic.a
diff --git a/config/rootfiles/core/28/filelists/mISDNuser b/config/rootfiles/core/28/filelists/mISDNuser
new file mode 120000
index 000000000..78537d4c9
--- /dev/null
+++ b/config/rootfiles/core/28/filelists/mISDNuser
@@ -0,0 +1 @@
+../../../common/mISDNuser
\ No newline at end of file
diff --git a/config/rootfiles/packages/lcr b/config/rootfiles/packages/lcr
new file mode 100644
index 000000000..0f0fdc045
--- /dev/null
+++ b/config/rootfiles/packages/lcr
@@ -0,0 +1,388 @@
+etc/init.d/lcr
+usr/bin/gentones
+usr/bin/genwave
+usr/bin/lcradmin
+usr/lib/asterisk/modules/chan_lcr.so
+#var/ipfire/lcr
+var/ipfire/lcr/directory.list
+var/ipfire/lcr/extensions
+var/ipfire/lcr/interface.conf
+var/ipfire/lcr/options.conf
+var/ipfire/lcr/routing.conf
+#var/ipfire/lcr/tones_american
+var/ipfire/lcr/tones_american/activated_loop.isdn
+var/ipfire/lcr/tones_american/busy_loop.isdn
+var/ipfire/lcr/tones_american/cause_01_loop.isdn
+var/ipfire/lcr/tones_american/cause_02_loop.isdn
+var/ipfire/lcr/tones_american/cause_03_loop.isdn
+var/ipfire/lcr/tones_american/cause_05_loop.isdn
+var/ipfire/lcr/tones_american/cause_06_loop.isdn
+var/ipfire/lcr/tones_american/cause_12_loop.isdn
+var/ipfire/lcr/tones_american/cause_13_loop.isdn
+var/ipfire/lcr/tones_american/cause_14_loop.isdn
+var/ipfire/lcr/tones_american/cause_15_loop.isdn
+var/ipfire/lcr/tones_american/cause_16_loop.isdn
+var/ipfire/lcr/tones_american/cause_1b_loop.isdn
+var/ipfire/lcr/tones_american/cause_1c_loop.isdn
+var/ipfire/lcr/tones_american/cause_1d_loop.isdn
+var/ipfire/lcr/tones_american/cause_1f_loop.isdn
+var/ipfire/lcr/tones_american/cause_22_loop.isdn
+var/ipfire/lcr/tones_american/cause_26_loop.isdn
+var/ipfire/lcr/tones_american/cause_29_loop.isdn
+var/ipfire/lcr/tones_american/cause_2a_loop.isdn
+var/ipfire/lcr/tones_american/cause_2f_loop.isdn
+var/ipfire/lcr/tones_american/cause_31_loop.isdn
+var/ipfire/lcr/tones_american/cause_32_loop.isdn
+var/ipfire/lcr/tones_american/cause_39_loop.isdn
+var/ipfire/lcr/tones_american/cause_3a_loop.isdn
+var/ipfire/lcr/tones_american/cause_3f_loop.isdn
+var/ipfire/lcr/tones_american/cause_41_loop.isdn
+var/ipfire/lcr/tones_american/cause_42_loop.isdn
+var/ipfire/lcr/tones_american/cause_45_loop.isdn
+var/ipfire/lcr/tones_american/cause_46_loop.isdn
+var/ipfire/lcr/tones_american/cause_55_loop.isdn
+var/ipfire/lcr/tones_american/cause_80_loop.isdn
+var/ipfire/lcr/tones_american/cause_81_loop.isdn
+var/ipfire/lcr/tones_american/cause_82_loop.isdn
+var/ipfire/lcr/tones_american/cause_83_loop.isdn
+var/ipfire/lcr/tones_american/cause_84_loop.isdn
+var/ipfire/lcr/tones_american/cause_85_loop.isdn
+var/ipfire/lcr/tones_american/cause_86_loop.isdn
+var/ipfire/lcr/tones_american/cause_87_loop.isdn
+var/ipfire/lcr/tones_american/crypt_off.isdn
+var/ipfire/lcr/tones_american/crypt_on.isdn
+var/ipfire/lcr/tones_american/deactivated_loop.isdn
+var/ipfire/lcr/tones_american/dialpbx.isdn
+var/ipfire/lcr/tones_american/dialpbx_loop.isdn
+var/ipfire/lcr/tones_american/dialtone_loop.isdn
+var/ipfire/lcr/tones_american/error_loop.isdn
+var/ipfire/lcr/tones_american/hold_loop.isdn
+var/ipfire/lcr/tones_american/joined.isdn
+var/ipfire/lcr/tones_american/left.isdn
+var/ipfire/lcr/tones_american/password_loop.isdn
+var/ipfire/lcr/tones_american/redial.isdn
+var/ipfire/lcr/tones_american/release_loop.isdn
+var/ipfire/lcr/tones_american/ringing_loop.isdn
+var/ipfire/lcr/tones_american/ringpbx_loop.isdn
+var/ipfire/lcr/tones_american/test_loop.isdn
+#var/ipfire/lcr/tones_efi
+var/ipfire/lcr/tones_efi/benutzerdefinierte.isdn
+var/ipfire/lcr/tones_efi/die.isdn
+var/ipfire/lcr/tones_efi/hello.isdn
+var/ipfire/lcr/tones_efi/ich_wiederhole.isdn
+var/ipfire/lcr/tones_efi/number_00.isdn
+var/ipfire/lcr/tones_efi/number_01.isdn
+var/ipfire/lcr/tones_efi/number_02.isdn
+var/ipfire/lcr/tones_efi/number_03.isdn
+var/ipfire/lcr/tones_efi/number_04.isdn
+var/ipfire/lcr/tones_efi/number_05.isdn
+var/ipfire/lcr/tones_efi/number_06.isdn
+var/ipfire/lcr/tones_efi/number_07.isdn
+var/ipfire/lcr/tones_efi/number_08.isdn
+var/ipfire/lcr/tones_efi/number_09.isdn
+var/ipfire/lcr/tones_efi/rufnummer_lautet.isdn
+var/ipfire/lcr/tones_efi/unterdrueckte.isdn
+#var/ipfire/lcr/tones_german
+var/ipfire/lcr/tones_german/activated_loop.isdn
+var/ipfire/lcr/tones_german/busy_loop.isdn
+var/ipfire/lcr/tones_german/cause_01_loop.isdn
+var/ipfire/lcr/tones_german/cause_02_loop.isdn
+var/ipfire/lcr/tones_german/cause_03_loop.isdn
+var/ipfire/lcr/tones_german/cause_05_loop.isdn
+var/ipfire/lcr/tones_german/cause_06_loop.isdn
+var/ipfire/lcr/tones_german/cause_12_loop.isdn
+var/ipfire/lcr/tones_german/cause_13_loop.isdn
+var/ipfire/lcr/tones_german/cause_14_loop.isdn
+var/ipfire/lcr/tones_german/cause_15_loop.isdn
+var/ipfire/lcr/tones_german/cause_16_loop.isdn
+var/ipfire/lcr/tones_german/cause_1b_loop.isdn
+var/ipfire/lcr/tones_german/cause_1c_loop.isdn
+var/ipfire/lcr/tones_german/cause_1d_loop.isdn
+var/ipfire/lcr/tones_german/cause_1f_loop.isdn
+var/ipfire/lcr/tones_german/cause_22_loop.isdn
+var/ipfire/lcr/tones_german/cause_26_loop.isdn
+var/ipfire/lcr/tones_german/cause_29_loop.isdn
+var/ipfire/lcr/tones_german/cause_2a_loop.isdn
+var/ipfire/lcr/tones_german/cause_2f_loop.isdn
+var/ipfire/lcr/tones_german/cause_31_loop.isdn
+var/ipfire/lcr/tones_german/cause_32_loop.isdn
+var/ipfire/lcr/tones_german/cause_39_loop.isdn
+var/ipfire/lcr/tones_german/cause_3a_loop.isdn
+var/ipfire/lcr/tones_german/cause_3f_loop.isdn
+var/ipfire/lcr/tones_german/cause_41_loop.isdn
+var/ipfire/lcr/tones_german/cause_42_loop.isdn
+var/ipfire/lcr/tones_german/cause_45_loop.isdn
+var/ipfire/lcr/tones_german/cause_46_loop.isdn
+var/ipfire/lcr/tones_german/cause_55_loop.isdn
+var/ipfire/lcr/tones_german/cause_80_loop.isdn
+var/ipfire/lcr/tones_german/cause_81_loop.isdn
+var/ipfire/lcr/tones_german/cause_82_loop.isdn
+var/ipfire/lcr/tones_german/cause_83_loop.isdn
+var/ipfire/lcr/tones_german/cause_84_loop.isdn
+var/ipfire/lcr/tones_german/cause_85_loop.isdn
+var/ipfire/lcr/tones_german/cause_86_loop.isdn
+var/ipfire/lcr/tones_german/cause_87_loop.isdn
+var/ipfire/lcr/tones_german/crypt_off.isdn
+var/ipfire/lcr/tones_german/crypt_on.isdn
+var/ipfire/lcr/tones_german/deactivated_loop.isdn
+var/ipfire/lcr/tones_german/dialpbx_loop.isdn
+var/ipfire/lcr/tones_german/dialtone_loop.isdn
+var/ipfire/lcr/tones_german/error_loop.isdn
+var/ipfire/lcr/tones_german/hold_loop.isdn
+var/ipfire/lcr/tones_german/joined.isdn
+var/ipfire/lcr/tones_german/left.isdn
+var/ipfire/lcr/tones_german/password_loop.isdn
+var/ipfire/lcr/tones_german/redial.isdn
+var/ipfire/lcr/tones_german/release_loop.isdn
+var/ipfire/lcr/tones_german/ringing.isdn
+var/ipfire/lcr/tones_german/ringing_loop.isdn
+var/ipfire/lcr/tones_german/ringpbx_loop.isdn
+var/ipfire/lcr/tones_german/test_loop.isdn
+#var/ipfire/lcr/vbox_english
+var/ipfire/lcr/vbox_english/call_anonymous.isdn
+var/ipfire/lcr/vbox_english/call_from.isdn
+var/ipfire/lcr/vbox_english/day_01.isdn
+var/ipfire/lcr/vbox_english/day_02.isdn
+var/ipfire/lcr/vbox_english/day_03.isdn
+var/ipfire/lcr/vbox_english/day_04.isdn
+var/ipfire/lcr/vbox_english/day_05.isdn
+var/ipfire/lcr/vbox_english/day_06.isdn
+var/ipfire/lcr/vbox_english/day_07.isdn
+var/ipfire/lcr/vbox_english/day_08.isdn
+var/ipfire/lcr/vbox_english/day_09.isdn
+var/ipfire/lcr/vbox_english/day_10.isdn
+var/ipfire/lcr/vbox_english/day_11.isdn
+var/ipfire/lcr/vbox_english/day_12.isdn
+var/ipfire/lcr/vbox_english/day_13.isdn
+var/ipfire/lcr/vbox_english/day_14.isdn
+var/ipfire/lcr/vbox_english/day_15.isdn
+var/ipfire/lcr/vbox_english/day_16.isdn
+var/ipfire/lcr/vbox_english/day_17.isdn
+var/ipfire/lcr/vbox_english/day_18.isdn
+var/ipfire/lcr/vbox_english/day_19.isdn
+var/ipfire/lcr/vbox_english/day_20.isdn
+var/ipfire/lcr/vbox_english/day_21.isdn
+var/ipfire/lcr/vbox_english/day_22.isdn
+var/ipfire/lcr/vbox_english/day_23.isdn
+var/ipfire/lcr/vbox_english/day_24.isdn
+var/ipfire/lcr/vbox_english/day_25.isdn
+var/ipfire/lcr/vbox_english/day_26.isdn
+var/ipfire/lcr/vbox_english/day_27.isdn
+var/ipfire/lcr/vbox_english/day_28.isdn
+var/ipfire/lcr/vbox_english/day_29.isdn
+var/ipfire/lcr/vbox_english/day_30.isdn
+var/ipfire/lcr/vbox_english/day_31.isdn
+var/ipfire/lcr/vbox_english/delete_ask.isdn
+var/ipfire/lcr/vbox_english/delete_done.isdn
+var/ipfire/lcr/vbox_english/intro.isdn
+var/ipfire/lcr/vbox_english/menu.isdn
+var/ipfire/lcr/vbox_english/minute.isdn
+var/ipfire/lcr/vbox_english/minutes.isdn
+var/ipfire/lcr/vbox_english/month_01.isdn
+var/ipfire/lcr/vbox_english/month_02.isdn
+var/ipfire/lcr/vbox_english/month_03.isdn
+var/ipfire/lcr/vbox_english/month_04.isdn
+var/ipfire/lcr/vbox_english/month_05.isdn
+var/ipfire/lcr/vbox_english/month_06.isdn
+var/ipfire/lcr/vbox_english/month_07.isdn
+var/ipfire/lcr/vbox_english/month_08.isdn
+var/ipfire/lcr/vbox_english/month_09.isdn
+var/ipfire/lcr/vbox_english/month_10.isdn
+var/ipfire/lcr/vbox_english/month_11.isdn
+var/ipfire/lcr/vbox_english/month_12.isdn
+var/ipfire/lcr/vbox_english/nothing.isdn
+var/ipfire/lcr/vbox_english/number_00.isdn
+var/ipfire/lcr/vbox_english/number_01.isdn
+var/ipfire/lcr/vbox_english/number_02.isdn
+var/ipfire/lcr/vbox_english/number_03.isdn
+var/ipfire/lcr/vbox_english/number_04.isdn
+var/ipfire/lcr/vbox_english/number_05.isdn
+var/ipfire/lcr/vbox_english/number_06.isdn
+var/ipfire/lcr/vbox_english/number_07.isdn
+var/ipfire/lcr/vbox_english/number_08.isdn
+var/ipfire/lcr/vbox_english/number_09.isdn
+var/ipfire/lcr/vbox_english/number_10.isdn
+var/ipfire/lcr/vbox_english/number_11.isdn
+var/ipfire/lcr/vbox_english/number_12.isdn
+var/ipfire/lcr/vbox_english/number_13.isdn
+var/ipfire/lcr/vbox_english/number_14.isdn
+var/ipfire/lcr/vbox_english/number_15.isdn
+var/ipfire/lcr/vbox_english/number_16.isdn
+var/ipfire/lcr/vbox_english/number_17.isdn
+var/ipfire/lcr/vbox_english/number_18.isdn
+var/ipfire/lcr/vbox_english/number_19.isdn
+var/ipfire/lcr/vbox_english/number_20.isdn
+var/ipfire/lcr/vbox_english/number_21.isdn
+var/ipfire/lcr/vbox_english/number_22.isdn
+var/ipfire/lcr/vbox_english/number_23.isdn
+var/ipfire/lcr/vbox_english/number_24.isdn
+var/ipfire/lcr/vbox_english/number_25.isdn
+var/ipfire/lcr/vbox_english/number_26.isdn
+var/ipfire/lcr/vbox_english/number_27.isdn
+var/ipfire/lcr/vbox_english/number_28.isdn
+var/ipfire/lcr/vbox_english/number_29.isdn
+var/ipfire/lcr/vbox_english/number_30.isdn
+var/ipfire/lcr/vbox_english/number_31.isdn
+var/ipfire/lcr/vbox_english/number_32.isdn
+var/ipfire/lcr/vbox_english/number_33.isdn
+var/ipfire/lcr/vbox_english/number_34.isdn
+var/ipfire/lcr/vbox_english/number_35.isdn
+var/ipfire/lcr/vbox_english/number_36.isdn
+var/ipfire/lcr/vbox_english/number_37.isdn
+var/ipfire/lcr/vbox_english/number_38.isdn
+var/ipfire/lcr/vbox_english/number_39.isdn
+var/ipfire/lcr/vbox_english/number_40.isdn
+var/ipfire/lcr/vbox_english/number_41.isdn
+var/ipfire/lcr/vbox_english/number_42.isdn
+var/ipfire/lcr/vbox_english/number_43.isdn
+var/ipfire/lcr/vbox_english/number_44.isdn
+var/ipfire/lcr/vbox_english/number_45.isdn
+var/ipfire/lcr/vbox_english/number_46.isdn
+var/ipfire/lcr/vbox_english/number_47.isdn
+var/ipfire/lcr/vbox_english/number_48.isdn
+var/ipfire/lcr/vbox_english/number_49.isdn
+var/ipfire/lcr/vbox_english/number_50.isdn
+var/ipfire/lcr/vbox_english/number_51.isdn
+var/ipfire/lcr/vbox_english/number_52.isdn
+var/ipfire/lcr/vbox_english/number_53.isdn
+var/ipfire/lcr/vbox_english/number_54.isdn
+var/ipfire/lcr/vbox_english/number_55.isdn
+var/ipfire/lcr/vbox_english/number_56.isdn
+var/ipfire/lcr/vbox_english/number_57.isdn
+var/ipfire/lcr/vbox_english/number_58.isdn
+var/ipfire/lcr/vbox_english/number_59.isdn
+var/ipfire/lcr/vbox_english/oclock_am.isdn
+var/ipfire/lcr/vbox_english/oclock_pm.isdn
+var/ipfire/lcr/vbox_english/pause.isdn
+var/ipfire/lcr/vbox_english/play.isdn
+var/ipfire/lcr/vbox_english/record_ask.isdn
+var/ipfire/lcr/vbox_english/record_play.isdn
+var/ipfire/lcr/vbox_english/record_record.isdn
+var/ipfire/lcr/vbox_english/store_ask.isdn
+var/ipfire/lcr/vbox_english/store_done.isdn
+#var/ipfire/lcr/vbox_german
+var/ipfire/lcr/vbox_german/call_anonymous.isdn
+var/ipfire/lcr/vbox_german/call_from.isdn
+var/ipfire/lcr/vbox_german/day_01.isdn
+var/ipfire/lcr/vbox_german/day_02.isdn
+var/ipfire/lcr/vbox_german/day_03.isdn
+var/ipfire/lcr/vbox_german/day_04.isdn
+var/ipfire/lcr/vbox_german/day_05.isdn
+var/ipfire/lcr/vbox_german/day_06.isdn
+var/ipfire/lcr/vbox_german/day_07.isdn
+var/ipfire/lcr/vbox_german/day_08.isdn
+var/ipfire/lcr/vbox_german/day_09.isdn
+var/ipfire/lcr/vbox_german/day_10.isdn
+var/ipfire/lcr/vbox_german/day_11.isdn
+var/ipfire/lcr/vbox_german/day_12.isdn
+var/ipfire/lcr/vbox_german/day_13.isdn
+var/ipfire/lcr/vbox_german/day_14.isdn
+var/ipfire/lcr/vbox_german/day_15.isdn
+var/ipfire/lcr/vbox_german/day_16.isdn
+var/ipfire/lcr/vbox_german/day_17.isdn
+var/ipfire/lcr/vbox_german/day_18.isdn
+var/ipfire/lcr/vbox_german/day_19.isdn
+var/ipfire/lcr/vbox_german/day_20.isdn
+var/ipfire/lcr/vbox_german/day_21.isdn
+var/ipfire/lcr/vbox_german/day_22.isdn
+var/ipfire/lcr/vbox_german/day_23.isdn
+var/ipfire/lcr/vbox_german/day_24.isdn
+var/ipfire/lcr/vbox_german/day_25.isdn
+var/ipfire/lcr/vbox_german/day_26.isdn
+var/ipfire/lcr/vbox_german/day_27.isdn
+var/ipfire/lcr/vbox_german/day_28.isdn
+var/ipfire/lcr/vbox_german/day_29.isdn
+var/ipfire/lcr/vbox_german/day_30.isdn
+var/ipfire/lcr/vbox_german/day_31.isdn
+var/ipfire/lcr/vbox_german/delete_ask.isdn
+var/ipfire/lcr/vbox_german/delete_done.isdn
+var/ipfire/lcr/vbox_german/intro.isdn
+var/ipfire/lcr/vbox_german/menu.isdn
+var/ipfire/lcr/vbox_german/minute.isdn
+var/ipfire/lcr/vbox_german/minutes.isdn
+var/ipfire/lcr/vbox_german/month_01.isdn
+var/ipfire/lcr/vbox_german/month_02.isdn
+var/ipfire/lcr/vbox_german/month_03.isdn
+var/ipfire/lcr/vbox_german/month_04.isdn
+var/ipfire/lcr/vbox_german/month_05.isdn
+var/ipfire/lcr/vbox_german/month_06.isdn
+var/ipfire/lcr/vbox_german/month_07.isdn
+var/ipfire/lcr/vbox_german/month_08.isdn
+var/ipfire/lcr/vbox_german/month_09.isdn
+var/ipfire/lcr/vbox_german/month_10.isdn
+var/ipfire/lcr/vbox_german/month_11.isdn
+var/ipfire/lcr/vbox_german/month_12.isdn
+var/ipfire/lcr/vbox_german/nothing.isdn
+var/ipfire/lcr/vbox_german/number_00.isdn
+var/ipfire/lcr/vbox_german/number_01.isdn
+var/ipfire/lcr/vbox_german/number_02.isdn
+var/ipfire/lcr/vbox_german/number_03.isdn
+var/ipfire/lcr/vbox_german/number_04.isdn
+var/ipfire/lcr/vbox_german/number_05.isdn
+var/ipfire/lcr/vbox_german/number_06.isdn
+var/ipfire/lcr/vbox_german/number_07.isdn
+var/ipfire/lcr/vbox_german/number_08.isdn
+var/ipfire/lcr/vbox_german/number_09.isdn
+var/ipfire/lcr/vbox_german/number_10.isdn
+var/ipfire/lcr/vbox_german/number_11.isdn
+var/ipfire/lcr/vbox_german/number_12.isdn
+var/ipfire/lcr/vbox_german/number_13.isdn
+var/ipfire/lcr/vbox_german/number_14.isdn
+var/ipfire/lcr/vbox_german/number_15.isdn
+var/ipfire/lcr/vbox_german/number_16.isdn
+var/ipfire/lcr/vbox_german/number_17.isdn
+var/ipfire/lcr/vbox_german/number_18.isdn
+var/ipfire/lcr/vbox_german/number_19.isdn
+var/ipfire/lcr/vbox_german/number_20.isdn
+var/ipfire/lcr/vbox_german/number_21.isdn
+var/ipfire/lcr/vbox_german/number_22.isdn
+var/ipfire/lcr/vbox_german/number_23.isdn
+var/ipfire/lcr/vbox_german/number_24.isdn
+var/ipfire/lcr/vbox_german/number_25.isdn
+var/ipfire/lcr/vbox_german/number_26.isdn
+var/ipfire/lcr/vbox_german/number_27.isdn
+var/ipfire/lcr/vbox_german/number_28.isdn
+var/ipfire/lcr/vbox_german/number_29.isdn
+var/ipfire/lcr/vbox_german/number_30.isdn
+var/ipfire/lcr/vbox_german/number_31.isdn
+var/ipfire/lcr/vbox_german/number_32.isdn
+var/ipfire/lcr/vbox_german/number_33.isdn
+var/ipfire/lcr/vbox_german/number_34.isdn
+var/ipfire/lcr/vbox_german/number_35.isdn
+var/ipfire/lcr/vbox_german/number_36.isdn
+var/ipfire/lcr/vbox_german/number_37.isdn
+var/ipfire/lcr/vbox_german/number_38.isdn
+var/ipfire/lcr/vbox_german/number_39.isdn
+var/ipfire/lcr/vbox_german/number_40.isdn
+var/ipfire/lcr/vbox_german/number_41.isdn
+var/ipfire/lcr/vbox_german/number_42.isdn
+var/ipfire/lcr/vbox_german/number_43.isdn
+var/ipfire/lcr/vbox_german/number_44.isdn
+var/ipfire/lcr/vbox_german/number_45.isdn
+var/ipfire/lcr/vbox_german/number_46.isdn
+var/ipfire/lcr/vbox_german/number_47.isdn
+var/ipfire/lcr/vbox_german/number_48.isdn
+var/ipfire/lcr/vbox_german/number_49.isdn
+var/ipfire/lcr/vbox_german/number_50.isdn
+var/ipfire/lcr/vbox_german/number_51.isdn
+var/ipfire/lcr/vbox_german/number_52.isdn
+var/ipfire/lcr/vbox_german/number_53.isdn
+var/ipfire/lcr/vbox_german/number_54.isdn
+var/ipfire/lcr/vbox_german/number_55.isdn
+var/ipfire/lcr/vbox_german/number_56.isdn
+var/ipfire/lcr/vbox_german/number_57.isdn
+var/ipfire/lcr/vbox_german/number_58.isdn
+var/ipfire/lcr/vbox_german/number_59.isdn
+var/ipfire/lcr/vbox_german/number_ein.isdn
+var/ipfire/lcr/vbox_german/number_eine.isdn
+var/ipfire/lcr/vbox_german/oclock.isdn
+var/ipfire/lcr/vbox_german/pause.isdn
+var/ipfire/lcr/vbox_german/play.isdn
+var/ipfire/lcr/vbox_german/record_ask.isdn
+var/ipfire/lcr/vbox_german/record_play.isdn
+var/ipfire/lcr/vbox_german/record_record.isdn
+var/ipfire/lcr/vbox_german/store_ask.isdn
+var/ipfire/lcr/vbox_german/store_done.isdn
+usr/sbin/genextension
+usr/sbin/genrc
+usr/sbin/lcr
diff --git a/lfs/lcr b/lfs/lcr
new file mode 100644
index 000000000..287d9014a
--- /dev/null
+++ b/lfs/lcr
@@ -0,0 +1,86 @@
+###############################################################################
+# #
+# IPFire.org - A linux based firewall #
+# Copyright (C) 2007 Michael Tremer & Christian Schmidt #
+# #
+# This program 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 3 of the License, or #
+# (at your option) any later version. #
+# #
+# This program 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 this program. If not, see . #
+# #
+###############################################################################
+
+###############################################################################
+# Definitions
+###############################################################################
+
+include Config
+
+VER = 64143650bc9c04fadc99694c499cf34750bc2804
+
+THISAPP = lcr.git-$(VER)
+DL_FILE = $(THISAPP).tar.gz
+DL_FROM = $(URL_IPFIRE)
+DIR_APP = $(DIR_SRC)/$(THISAPP)
+TARGET = $(DIR_INFO)/$(THISAPP)
+PROG = lcr
+PAK_VER = 1
+
+DEPS = ""
+
+###############################################################################
+# Top-level Rules
+###############################################################################
+
+objects = $(DL_FILE)
+
+$(DL_FILE) = $(DL_FROM)/$(DL_FILE)
+
+$(DL_FILE)_MD5 = 972af4b1f72874700e247db4c12992af
+
+install : $(TARGET)
+
+check : $(patsubst %,$(DIR_CHK)/%,$(objects))
+
+download :$(patsubst %,$(DIR_DL)/%,$(objects))
+
+md5 : $(subst %,%_MD5,$(objects))
+
+dist:
+ @$(PAK)
+
+###############################################################################
+# Downloading, checking, md5sum
+###############################################################################
+
+$(patsubst %,$(DIR_CHK)/%,$(objects)) :
+ @$(CHECK)
+
+$(patsubst %,$(DIR_DL)/%,$(objects)) :
+ @$(LOAD)
+
+$(subst %,%_MD5,$(objects)) :
+ @$(MD5)
+
+###############################################################################
+# Installation Details
+###############################################################################
+
+$(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects))
+ @$(PREBUILD)
+ @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar zxf $(DIR_DL)/$(DL_FILE)
+ cd $(DIR_SRC)/lcr.git && sed -i 's|usr/local/lcr|var/ipfire/lcr|g' Makefile.in
+ cd $(DIR_SRC)/lcr.git && sed -i 's|usr/local/lcr|var/ipfire/lcr|g' Makefile.am
+ cd $(DIR_SRC)/lcr.git && ./configure --prefix=/usr
+ cd $(DIR_SRC)/lcr.git && make $(MAKETUNING)
+ cd $(DIR_SRC)/lcr.git && make install
+ @rm -rf $(DIR_APP)
+ @$(POSTBUILD)
diff --git a/lfs/mISDNuser b/lfs/mISDNuser
new file mode 100644
index 000000000..8cc26fd41
--- /dev/null
+++ b/lfs/mISDNuser
@@ -0,0 +1,75 @@
+###############################################################################
+# #
+# IPFire.org - A linux based firewall #
+# Copyright (C) 2007 Michael Tremer & Christian Schmidt #
+# #
+# This program 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 3 of the License, or #
+# (at your option) any later version. #
+# #
+# This program 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 this program. If not, see . #
+# #
+###############################################################################
+
+###############################################################################
+# Definitions
+###############################################################################
+
+include Config
+
+VER = 54928dec57bc846f2c2186f3640e69a053cd3641
+
+THISAPP = mISDNuser.git-$(VER)
+DL_FILE = $(THISAPP).tar.gz
+DL_FROM = $(URL_IPFIRE)
+DIR_APP = $(DIR_SRC)/$(THISAPP)
+TARGET = $(DIR_INFO)/$(THISAPP)
+
+###############################################################################
+# Top-level Rules
+###############################################################################
+
+objects = $(DL_FILE)
+
+$(DL_FILE) = $(DL_FROM)/$(DL_FILE)
+
+$(DL_FILE)_MD5 = 04d5252e89fba1e3e58ebb4285222d25
+
+install : $(TARGET)
+
+check : $(patsubst %,$(DIR_CHK)/%,$(objects))
+
+download :$(patsubst %,$(DIR_DL)/%,$(objects))
+
+md5 : $(subst %,%_MD5,$(objects))
+
+###############################################################################
+# Downloading, checking, md5sum
+###############################################################################
+
+$(patsubst %,$(DIR_CHK)/%,$(objects)) :
+ @$(CHECK)
+
+$(patsubst %,$(DIR_DL)/%,$(objects)) :
+ @$(LOAD)
+
+$(subst %,%_MD5,$(objects)) :
+ @$(MD5)
+
+###############################################################################
+# Installation Details
+###############################################################################
+
+$(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects))
+ @$(PREBUILD)
+ @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar zxf $(DIR_DL)/$(DL_FILE)
+ cd $(DIR_SRC)/mISDNuser.git && make MISDNDIR=/usr/src/linux
+ cd $(DIR_SRC)/mISDNuser.git && make install MISDNDIR=/usr/src/linux
+ @$(POSTBUILD)
diff --git a/src/initscripts/init.d/lcr b/src/initscripts/init.d/lcr
new file mode 100644
index 000000000..56a4553dc
--- /dev/null
+++ b/src/initscripts/init.d/lcr
@@ -0,0 +1,45 @@
+#!/bin/sh
+########################################################################
+# Begin $rc_base/init.d/lcr
+#
+# Description : Linux Call Router Script
+#
+# Authors : Arne Fitzenreiter (arne_f@ipfire.org)
+#
+# Version : 01.00
+#
+# Notes :
+#
+########################################################################
+
+. /etc/sysconfig/rc
+. ${rc_functions}
+
+case "${1}" in
+ start)
+ boot_mesg "Starting Linux Call Router..."
+ nice --10 /usr/sbin/lcr fork >> /var/log/lcr 2>&1
+ evaluate_retval
+ ;;
+
+ stop)
+ boot_mesg "Stopping Linux Call Router..."
+ killproc /usr/sbin/lcr
+ ;;
+
+ restart)
+ ${0} stop
+ sleep 1
+ ${0} start
+ ;;
+
+ status)
+ statusproc /usr/sbin/lcr
+ ;;
+ *)
+ echo "Usage: ${0} {start|stop|restart|status}"
+ exit 1
+ ;;
+esac
+
+# End $rc_base/init.d/lcr
diff --git a/src/initscripts/init.d/mISDN b/src/initscripts/init.d/mISDN
index a9c1c9081..1d599ae4b 100644
--- a/src/initscripts/init.d/mISDN
+++ b/src/initscripts/init.d/mISDN
@@ -1,780 +1,61 @@
-#!/bin/bash
-
-################################################################################
+#!/bin/sh
+########################################################################
+# Begin $rc_base/init.d/mISDN
#
-# misdn-init init script
+# Description : Start mISDN v2
#
-# Copyright (C) 2005, Nadi Sarrar
+# Authors : Arne Fitzenreiter - arne_f@ipfire.org
#
-# Nadi Sarrar
+# Version : 00.00
#
-# This program is free software, distributed under the terms of
-# the GNU General Public License
+# Notes :
#
+########################################################################
-#
-# USAGE:
-#
-# /usr/sbin/misdn-init start|stop|restart|config|scan|help
-#
+. /etc/sysconfig/rc
+. ${rc_functions}
-# chkconfig: 2345 35 60
-# description: mISDN Kernel Modules
+case "${1}" in
+ start)
-#
-# CONFIGURATION:
-#
-# Path to your misdn-init.conf:
-#
-misdn_init_conf="/etc/misdn-init.conf"
-#
-################################################################################
+ boot_mesg "Starting mISDNv2 ... "
-#
-# change this to modify the user/group settings of /dev/mISDN
-#
-USER=asterisk
-GROUP=asterisk
-
-# HFC 8/4 (S0) Options
-master_clock=17
-
-# HFC-E1 Options
-optical=17
-los=19
-ais=20
-slip=21
-nocrc4=24
-
-# Card Settings
-ulaw=9
-dtmf=10
-pcm_slave=12
-ignore_pcm_frameclock=13
-
-rxclock=14
-crystalclock=19
-
-watchdog=20
-
-
-#dsp defaults
-dsp_options=0
-
-poll_option=
-
-dsp_poll_option=
-
-dtmfthreshold_option=
-
-function check_cmd {
- if ! which "${1}" > /dev/null; then
- if [ "$(id -u)" != "0" ]; then
- echo "[!!] FATAL: $1 not in path, please install and/or be root."
- else
- echo "[!!] FATAL: $1 not in path, please install."
- fi
- if [ "${2}" != "notfatal" ] ; then
- exit 1
- fi
- else
- var=$(echo ${1} | tr a-z A-Z)
- eval "$var=`which ${1}`"
- fi
-}
-
-check_cmd modprobe
-check_cmd rmmod
-check_cmd insmod
-check_cmd lspci
-check_cmd lsusb notfatal
-check_cmd mknod
-check_cmd bc
-check_cmd cut
-check_cmd wc
-check_cmd seq
-check_cmd sed
-
-function check_asterisk {
- if ps ax | grep -v grep | grep asterisk > /dev/null ; then asterisk -rx "stop now" ; fi
-}
-
-function create_card_db
-{
- cardline=""
- cardcount=1
- skipnext=0
-
- IFS=$'\n'
- NL="
-"
- function addcard {
- cardline="${cardline}${cardcount},${1}${NL}"
- let "cardcount = ${cardcount} + 1"
- }
-
- function addport {
- let "portcount = ${portcount} + ${1}"
- }
-
- for line in $(${LSPCI} -n -d 0xd161:b410); do
- addcard "4,0x4"
- done
-
- for line in $(${LSPCI} -n | ${SED} -n 's/^\(0000:\|\)\([0-9a-f]\{2\}:[0-9a-f]\{2\}.[0-9a-f]\{1\}\)\( Class \| \)[0-9a-f]\{4\}: 1397:\([0-9a-f]\{4\}\).*$/\4 \2/p'); do
- if [ ${skipnext} -eq 1 ]; then
- skipnext=0
- continue
- fi
- case "${line}" in
- 30b1*)
- case "${line:5}" in
- 00*)
- addcard "1,0x1"
- ;;
- *)
- if [ $(${LSPCI} -n -s ${line:5:3} -d 0x1397:30b1 | ${WC} -l) -eq 2 ]; then
- addcard "2,2E1"
- skipnext=1
- else
- addcard "1,0x1"
- fi
- ;;
- esac
- ;;
- 16b8*)
- addcard "8,0x8"
- ;;
- 08b4*)
-
- if ${LSPCI} -n -v -s "${line:5}" | grep "Subsystem" | grep "1397:b567" > /dev/null ; then
- addcard "1,0x4"
- elif ${LSPCI} -n -v -s "${line:5}" | grep "Subsystem" | grep "1397:b566\|1397:b569" > /dev/null ; then
- addcard "2,0x4"
- else
- addcard "4,0x4"
- fi
- ;;
- esac
- done
- for line in $(${LSPCI} -n | grep "1397:\(2bd\(0\|6\|7\|8\|9\|a\|b\|c\)\|b100\)\|1043:0675\|0871:ffa\(1\|2\)\|1051:0100\|15b0:2bd0\|114f:007\(0\|1\|2\|3\)\|13d1:2bd1\|182d:3069"); do
- addcard "1,hfcpci"
- done
- for line in $(${LSPCI} -n | grep "1244:\(0a00\|0e00\)"); do
- addcard "1,avmfritz"
- done
- for line in $(${LSPCI} -n -d 1050:6692); do
- addcard "1,w6692pci"
- done
-
- if [ -e ${LSUSB} ]; then
- for line in $(${LSUSB} | grep "0959:2bd0\|0675:1688\|07b0:000\(6\|7\)\|0742:200\(7\|8\|9\|A\)\|08e3:0301\|07fa:084\(7\|8\)\|07ba:0006"); do
- addcard "1,hfcsusb"
- done
- fi
-
- echo "${cardline}"
-}
-
-function expand
-{
- local IFS=$','
- for tok in $1; do
- if [ "$(echo $tok | ${SED} -ne 's/\([0-9]*\)-\([0-9]*\)/\1 \2/p')" != "" ]; then
- ${SEQ} $(echo $tok | ${SED} -ne 's/\([0-9]*\)-[0-9]*/\1/p') $(echo $tok | ${SED} -ne 's/[0-9]*-\([0-9]*\)/\1/p')
- else
- echo $tok
- fi
- done
-}
-
-function load_card_modules {
-
- carddb=$(create_card_db)
-
- function find_carddb_line {
- i=1
- for l in ${carddb} ; do
- if [ $i -eq $1 ] ; then
- echo $l
- return
- fi
- let "i=$i+1"
- done
- }
-
- if [ ! -z "$1" ] ; then
- echo "Loading only $1"
- fi
-
- IFS=$'\n'
- skipnr=0
-
- for line in $(${SED} -n -e '/^[^#]/p' ${misdn_init_conf});
- do
- var=$(echo "${line}" | ${CUT} -d "=" -f1)
- val=$(echo "${line}" | ${CUT} -d "=" -f2)
-
- case "${var}" in
- card)
- #echo "processing line: $val"
- nr=$(echo "${val}" | ${CUT} -d "," -f1)
- mod=$(echo "${val}" | ${CUT} -d "," -f2)
- opns=$(echo "${val}" | ${CUT} -d "," -f3-)
-
- #getting portcount from carddb
- ports=$(find_carddb_line $nr | ${CUT} -d "," -f2)
- let "nr = ${nr} + ${skipnr}"
- #echo "nr $nr ports $ports mod $mod opns: $opns"
-
- case "${mod}" in
- 2E1)
- hfcmulti[${nr}]=1
- hfcmulti[$((${nr} + 1))]=1
- let "hfcports = ${hfcports} + ${ports}"
- IFS=$','
- for li in ${opns}; do
- hfcmulti[${nr}]=$(echo "obase=10;2^(${!li}-1)+${hfcmulti[${nr}]}" | ${BC})
- if [ "${li}" != "pcm_slave" ]; then
- hfcmulti[$((${nr} + 1))]=$(echo "obase=10;2^(${!li}-1)+${hfcmulti[$((${nr}+1))]}" | ${BC})
- fi
- done
- IFS=$'\n'
- hfcmulti[$((${nr} + 1))]=$(echo "obase=10;2^(${pcm_slave}-1)+${hfcmulti[$((${nr}+1))]}" | ${BC})
- let "skipnr = ${skipnr} + 1"
- ;;
- 0x*)
- hfcmulti[${nr}]=$(echo ${mod} | ${SED} -e "s/^0x\([0-9]*\)/\1/")
- let "hfcports = ${hfcports} + ${ports}"
- IFS=$','
- for li in ${opns}; do
- hfcmulti[${nr}]=$(echo "obase=10;2^(${!li}-1)+${hfcmulti[${nr}]}" | ${BC})
- done
- IFS=$'\n'
- ;;
- *)
- other_card[${nr}]=${mod}
- ;;
- esac
- ;;
- te_ptp)
- for li in $(expand "${val}"); do
- layermask[${li}]="0xf"
- protocol[${li}]=34 # 0x22 == 34
- done
- ;;
- te_ptmp)
- for li in $(expand "${val}"); do
- layermask[${li}]="0xf"
- protocol[${li}]=2 # 0x2 == 2
- done
- ;;
- nt_*)
- for li in $(expand "${val}"); do
- layermask[${li}]="0x3"
- protocol[${li}]=18 # 0x12 == 18
- done
- ;;
- te_capi_ptp)
- for li in $(expand "${val}"); do
- layermask[${li}]="0x0"
- protocol[${li}]=34 # 0x22 == 34
- done
-
- export addcapi=1
- ;;
- te_capi_ptmp)
- for li in $(expand "${val}"); do
- layermask[${li}]="0x0"
- protocol[${li}]=2 # 0x2 == 2
- done
-
- export addcapi=1
- ;;
-
- option)
- port=`echo "${val}" | ${SED} -e "s/^\([0-9]*\),.*/\1/"`
- opt=`echo "${val}" | ${SED} -e "s/^[0-9]*,\(.*\)/\1/"`
-
- if [ -z ${protocol[${port}]} ]; then
- protocol[${port}]="0"
- fi
-
- IFS=$','
- for li in ${opt}; do
- protocol[${port}]=$(echo "obase=10;2^(${!li}-1)+${protocol[${port}]}" | ${BC})
- done
- IFS=$'\n'
- ;;
- poll)
- poll=${val}
- poll_option=poll=${val}
- ;;
- dsp_poll)
- dsp_poll_option=poll=${val}
- ;;
- pcm)
- pcm=${val}
- ;;
- dsp_options)
- export dsp_options=${val}
- ;;
- dtmfthreshold)
- export dtmfthreshold_option="dtmfthreshold=${val}"
- ;;
- debug)
- debug=${val}
- ;;
- timer)
- timer=${val}
- ;;
- *)
- echo "unknown variable: ${var}"
- ;;
- esac
-
- done
-
- echo "-----------------------------------------"
- echo " Loading module(s) for your misdn-cards:"
- echo "-----------------------------------------"
-
- card_index=1
- port_index=1
- while [ ! -z ${hfcmulti[${card_index}]} ] || [ ! -z ${other_card[${card_index}]} ];
- do
- if [ ! -z ${hfcmulti[${card_index}]} ]; then
- # MODPROBE COMMAND FOR hfcmulti CARD
- hfcmulti_type="type="
- hfcmulti_prot="protocol="
- hfcmulti_layer="layermask="
- while [ ! -z ${hfcmulti[${card_index}]} ];
- do
- hfcmulti_type="${hfcmulti_type}$(echo "obase=16;\"0x\";${hfcmulti[${card_index}]}" | ${BC} ),"
- let "card_index = ${card_index} + 1"
- done
- while [ ${hfcports} -gt 0 ];
- do
- if [ ! -z ${protocol[${port_index}]} ]; then
- hfcmulti_prot="${hfcmulti_prot}$(echo "obase=16;\"0x\";${protocol[${port_index}]}" | ${BC}),"
- else
- hfcmulti_prot="${hfcmulti_prot}0x2,"
- fi
- if [ ! -z ${layermask[${port_index}]} ]; then
- hfcmulti_layer="${hfcmulti_layer}${layermask[${port_index}]},"
- else
- hfcmulti_layer="${hfcmulti_layer}0xf,"
- fi
- let "port_index = ${port_index} + 1"
- let "hfcports = ${hfcports} - 1"
- done
- hfcmulti_type="$(echo ${hfcmulti_type} | ${SED} -e 's/^\(.*\),$/\1/')"
- hfcmulti_prot="$(echo ${hfcmulti_prot} | ${SED} -e 's/^\(.*\),$/\1/')"
- hfcmulti_layer="$(echo ${hfcmulti_layer} | ${SED} -e 's/^\(.*\),$/\1/')"
- hfcmulti_cmd="${MODPROBE} --ignore-install hfcmulti ${hfcmulti_type} ${hfcmulti_prot} ${hfcmulti_layer}"
- if [ ! -z ${poll} ]; then
- hfcmulti_cmd="${hfcmulti_cmd} poll=${poll}"
- fi
- if [ ! -z ${pcm} ]; then
- hfcmulti_cmd="${hfcmulti_cmd} pcm=${pcm}"
- fi
- if [ ! -z ${debug} ]; then
- hfcmulti_cmd="${hfcmulti_cmd} debug=${debug}"
- fi
-
- if [ ! -z ${timer} ]; then
- hfcmulti_cmd="${hfcmulti_cmd} timer=${timer}"
- fi
-
- if [ -z "$1" ] ; then
- echo ${hfcmulti_cmd}
- eval ${hfcmulti_cmd}
- else
- if [ "$1" = "hfcmulti" ] ; then
- echo ${hfcmulti_cmd}
- eval ${hfcmulti_cmd}
- fi
- fi
- else
- # MODPROBE COMMAND FOR _NON_ hfcmulti CARD
- other_mod="${other_card[${card_index}]}"
- other_cmd="${MODPROBE} --ignore-install ${other_mod}"
- if [ ! -z ${protocol[${port_index}]} ]; then
- other_prot="protocol=$(echo "obase=16;\"0x\";${protocol[${port_index}]}" | ${BC}),"
- else
- other_prot="protocol=0x2,"
- fi
- if [ ! -z ${layermask[${port_index}]} ]; then
- other_layer="layermask=${layermask[${port_index}]},"
- else
- other_layer="layermask=0xf,"
- fi
- other_extra=""
- modinfo $other_mod | egrep -q 'parm: *poll' && other_extra="$other_extra ${poll_option}"
-
- let "prev = ${card_index}"
- let "card_index = ${card_index} + 1"
- let "port_index = ${port_index} + 1"
- while [ "${other_card[${card_index}]}" == "${other_card[${prev}]}" ];
- do
- if [ ! -z ${protocol[${port_index}]} ]; then
- other_prot="${other_prot}$(echo "obase=16;\"0x\";${protocol[${port_index}]}" | ${BC}),"
- else
- other_prot="${other_prot}0x2,"
- fi
- if [ ! -z ${layermask[${port_index}]} ]; then
- other_layer="${other_layer}${layermask[${port_index}]},"
- else
- other_layer="${other_layer}0xf,"
- fi
- let "prev = ${card_index}"
- let "card_index = ${card_index} + 1"
- let "port_index = ${port_index} + 1"
- done
-
- other_prot="$(echo ${other_prot} | ${SED} -e 's/^\(.*\),$/\1/')"
- other_layer="$(echo ${other_layer} | ${SED} -e 's/^\(.*\),$/\1/')"
- other_cmd="${other_cmd} ${other_prot} ${other_layer} ${other_extra}"
-
- if [ -z "$1" ] ; then
- echo "${other_cmd}"
- eval ${other_cmd}
- else
- if [ "$1" = "${other_card[${prev}]}" ] ; then
- echo ${other_cmd}
- eval ${other_cmd}
- fi
- fi
-
-
- fi
- done
-}
-
-function unload_card_modules {
-
- IFS=$'\n'
-
- for line in $(${SED} -ne '/^[^#]/p' ${misdn_init_conf});
- do
- var=$(echo "${line}" | ${CUT} -d "=" -f 1)
- val=$(echo "${line}" | ${CUT} -d "=" -f 2)
-
- case "${var}" in
- card)
- nr=$(echo "${val}" | ${CUT} -d "," -f 1)
- mod=$(echo "${val}" | ${CUT} -d "," -f 2)
- case "${mod}" in
- 2E1)
- modulelist[${nr}]=hfcmulti
- ;;
- 0x*)
- modulelist[${nr}]=hfcmulti
- ;;
- *)
- modulelist[${nr}]=${mod}
- ;;
- esac
- ;;
- esac
-
- done
-
- echo "-------------------------------------------"
- echo " Unloading module(s) for your misdn-cards:"
- echo "-------------------------------------------"
-
- rmmod_cmd="${RMMOD} ${modulelist[1]}"
- echo "${rmmod_cmd}"
- eval ${rmmod_cmd}
-
- index=2
- prev=1
- while [ ! -z ${modulelist[${index}]} ];
- do
- if [ ${modulelist[${index}]} != ${modulelist[${prev}]} ]; then
- rmmod_cmd="${RMMOD} ${modulelist[${index}]}"
- echo "${rmmod_cmd}"
- eval ${rmmod_cmd}
- fi
- let "prev = ${index}"
- let "index = ${index} + 1"
- done
-}
-
-function create_misdn_init_conf {
- cardline=""
- cardcount=1
- portcount=0
- cardconf=""
- IFS=$'\n'
- NL="
-"
- carddb=$(create_card_db)
-
- for line in $carddb ; do
- tmp="card=$(echo $line | ${CUT} -d, -f1,3)"
- let "portcount = ${portcount} + $(echo $line | ${CUT} -d, -f2)"
- cardline="${cardline}${tmp}${NL}"
- done
-
- function die {
- echo "[!!] ${1}"
- exit 1
- }
-
- if [ "${1}" == "scan" ]; then
- echo "[OK] found the following devices:"
- echo "${cardline}[ii] run \"/usr/sbin/misdn-init config\" to store this information to ${misdn_init_conf}"
- else
-
- index=1
- portline="te_ptmp="
- while [ ${index} -le ${portcount} ]; do
- portline="${portline}${index},"
- let "index = ${index} + 1"
- done
- portline="$(echo ${portline} | ${SED} -e 's/^\(.*\),$/\1/')"
-
- misdn_cfg_pt1="#
-# Configuration file for your misdn hardware
-#
-# Usage: /usr/sbin/misdn-init start|stop|restart|config|scan|help
-#
-
-#
-# Card Settings
-#
-# Syntax: card=,[,