Warning: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in ..../includes/class_bootstrap.php(430) : eval()'d code on line 123
Новая прошивка 1.9.2.7-d/-rtn от энтузиастов и Олега - Page 5
Page 5 of 393 FirstFirst ... 345671555105 ... LastLast
Results 61 to 75 of 5890

Thread: Новая прошивка 1.9.2.7-d/-rtn от энтузиастов и Олега

  1. #61
    Quote Originally Posted by Sanvean View Post
    А где взять версию 2009.01.24?
    бинарники http://code.google.com/p/wl500g/downloads/list
    или напрямую из svn
    svn checkout http://wl500g.googlecode.com/svn/trunk/ wl500g-1.9.2.7-d

  2. #62
    Quote Originally Posted by lly View Post
    1. allow_restart надо где-то включать. Делать это абсолютно для всех дисков я не хочу. А механизм slave_configure позволяет это делать только для всех USB дисков в scsiglue.с. Т.о. надо или втискиваться в существующие hook'и (куда??) или добавлять из 2.6
    2. функции START_UNIT в 2.6 выполнены чуть по другому. Бэкпорт возможен, но надо посидеть и подумать.


    Updated: Глянул - это не поможет. Основной вопрос - куда в существующем коде пихать вызов START_UNIT (он же scsi_eh_try_stu в 2.6)?

    Updated2: Ну глобально-то понятно - в scsi_unjam_host. А конкретно разобрать эту жуткую функцию в 2.4 на 500 с лишним строк мне тяжеловато. Может найдутся желающие?
    Вообщем, реализованы такие дела в /drivers/scsi/
    * дополнительные функции STATIC int scsi_send_stu(Scsi_Cmnd * SCpnt) и STATIC int scsi_try_start_unit(Scsi_Cmnd * SCpnt)
    * в scsi_unjam_host использование в нужном месте + в reset_host
    * в scsi_check_sense возврат FAILED по INIT COMMAND REQUIRED (0x02) для вызова scsi_unjam_host

    только INIT COMMAND REQUIRED никогда не придет от usb_storage, там его просто нет, поэтому только по статусу флаг allow_restart устанавливать нельзя. а где именно в /drivers/usb/stogare/ установить флаг srb->allow_restart мне что то совсем не по глазам, доделывать callback фунцкции по типу slave_configure невариант вообще...
    что делать будем?

    пре-патчи выложу.

  3. #63
    Quote Originally Posted by lly View Post
    все кричат что очень надо! срочно! без этого жить не можем! А потом тишина...
    Вы работаете быстрее, чем я на форум захожу ... Спасибо огромное! Прошивку залил, опробую как только смогу попозже сегодня - "проблемный" диск сейчас не у меня. Но по-крайней мере работу с другими дисками и флэш-драйвами новый патч не сломал .

    По-поводу Speedmod из Tomato... Насколько я понимаю, большинство изменений в netfilter - это бэкпорт из более нового ядра 2.4.3x (в частности, JHASH в новых ядрах используется стандартно безо всяких define), а по сути там 3 составляющие. (1) Безусловное задание размеров хэш-таблицы в ip_conntrack_core.c (ip_conntrack_htable_size, ip_conntrack_max) и изменение % на & в одном месте, (2) "тонкие настройки" в route.c (ip_rt_gc_elasticity, goal, ipv4_dst_ops.gc_thresh, ip_rt_max_size), и (3) изменения в jhash.h, которые вы пропустили - для использования lookup3 вместо lookup2. Сейчас нет сорсов под рукой кроме вашего дифа - патч не могу сделать.

    Знакомый тестировал Tomato до и после Speedmod на 500gPv2. До - роутер умирал после приблизительно 4000 connections и перегружался сам. После - доживал до 9500, и потом, после уменьшения числа коннектов, возвращался к нормальной работе. Правда, неизвестно какова в этом доля собственно Speedmod-изменений, в сравнении с бэкпортом остального кода netfilter из 2.4.3x...
    Last edited by tb813; 03-02-2009 at 16:57.

  4. #64
    Join Date
    Nov 2006
    Location
    Russia, Moscow
    Posts
    3,640
    Quote Originally Posted by tb813 View Post
    Вы работаете быстрее, чем я на форум захожу ...
    theMIROn изнывает от нетерпения, а ты чем занимаешься???

    По-поводу Speedmod из Tomato... Насколько я понимаю, большинство изменений в netfilter - это бэкпорт из более нового ядра 2.4.3x (в частности, JHASH в новых ядрах используется стандартно безо всяких define), а по сути там 3 составляющие.
    Именно так!
    (1) Безусловное задание размеров хэш-таблицы в ip_conntrack_core.c (ip_conntrack_htable_size, ip_conntrack_max) и изменение % на & в одном месте, (2) "тонкие настройки" в route.c (ip_rt_gc_elasticity, goal, ipv4_dst_ops.gc_thresh, ip_rt_max_size), и (3) изменения в jhash.h, которые вы пропустили - для использования lookup3 вместо lookup2. Сейчас нет сорсов под рукой кроме вашего дифа - патч не могу сделать.
    (1) - не нравится
    (2) - надо смотреть и анализировать
    (3) - посмотрел на сайте автора, тесты все убедительные. Будем экспериментировать?

    Изменения в include/ пропустил потому, что они есть только в старой версии 1.21! Конспираторы блин!

    Updated 04.02:
    Приаттачил diff'ы к обеим версиям.
    Last edited by lly; 07-02-2009 at 12:02.

  5. #65
    Join Date
    Nov 2006
    Location
    Russia, Moscow
    Posts
    3,640
    По-поводу Speedmod из Tomato:
    1. Решил проэкспериментировать с jhash, т.к. на сайте автора (Bob Jenkin's) тесты убедительные. (r79 - 312-netfilter-jhash.patch)
    2. Кто может сказать нафига в Tomato вынесены в procfs sysctl_ip_conntrack_tcp_timeouts[]/sysctl_ip_conntrack_udp_timeouts[] Когда это уже всё есть, только в разбивку, а не одним массивом.
    3. оставшиеся константы:
      PHP Code:
      ip_conntrack_core.c:
        
      ip_conntrack_htable_size
        ip_conntrack_max
      route
      .c:
        
      ip_rt_gc_elasticity
        goal
        ip_rt_max_size 
      Кто-нибудь может добавить убедительное в дополнению к письму tb813


    На данный момент размер таблицы conntrack у меня:
    ip_conntrack version 2.1 (5953 buckets, 5953 max) - 312 bytes per conntrack

  6. Quote Originally Posted by lly View Post
    Думаю, что денек стоит подождать - может кто еще из энтузиастов какие баги найдет и сумеет либо сам поправить, либо четко сформулировать что не так. Уж больно я не люблю письма в стиле "а у нас в подвале стук".
    Предлагаю полностью подготовить прошивку к работе с USB модемами. Для начала хотя бы из коммандной строки.
    Для этого:
    1. Включить в прошивку модули драйверов acm.o и ipw.o. Для этого в файле /Makefile.diff после 277 строки добавить две строки
    + $(SRCMODULESDIR)/drivers/usb/serial/ipw.o
    + $(SRCMODULESDIR)/drivers/usb/acm.o

    2. Включить в папку /usr/sbin прошивки бинарник номеронабирателя chat от последней OPENWRT.
    Attached Files Attached Files

  7. #67
    Quote Originally Posted by AlexeyS View Post
    Только это похоже фича от авторов DNSMASQ... Насколько я помню, в 1.9.2.7-10 там вообще стояло имя не из hosts, а сообщенное компом... А теперь при обращении к alexey.net, происходит обращение не к 172.16.0.2, как мы хотим, а к адресу внешнего интерфейса роутера (ибо так прописано в днс провайдера)...
    стоит почитать на предмет доменов и/или алиасов
    http://www.thekelleys.org.uk/dnsmasq...q.conf.example

  8. #68
    Quote Originally Posted by AlexeyS View Post
    Насколько я помню, если имя прописано в hosts, то оно имеет приоритет над DNS серверами, как и было в 1.9.2.7-10, а тут имя просто искажается и не резольвится по hosts...
    Code:
    # Add local-only domains here, queries in these domains are answered
    # from /etc/hosts or DHCP only.
    #local=/localnet/
    ...
    # If you don't want dnsmasq to read /etc/hosts, uncomment the
    # following line.
    #no-hosts
    # or if you want it to read another file, as well as /etc/hosts, use
    # this.
    #addn-hosts=/etc/banner_add_hosts
    
    # Set this (and domain: see below) if you want to have a domain
    # automatically added to simple names in a hosts-file.
    #expand-hosts
    
    # Set the domain for dnsmasq. this is optional, but if it is set, it
    # does the following things.
    # 1) Allows DHCP hosts to have fully qualified domain names, as long
    #     as the domain part matches this setting.
    # 2) Sets the "domain" DHCP option thereby potentially setting the
    #    domain of all systems configured by DHCP
    # 3) Provides the domain part for "expand-hosts"
    #domain=thekelleys.org.uk
    p.s для добавления опций, нужно их прописывать в /usr/local/etc/dnsmasq.conf, который будет дописываться к генерируемому /etc/dnsmasq.conf

  9. #69
    Quote Originally Posted by lly View Post
    Не знаю, в прошивке Олега используется pptpclient.
    Кстати, летом 2008 вышел новый релиз этого пакета после более чем двухлетнего перерыва - 1.7.2 (с)
    http://pptpclient.sourceforge.net/

  10. Ну вот как и обещал, осилил я универсальный скрипт подъема соединения посредством USB модемов(GPRS, CDMA, DIALUP, IPW). Скрипт одним файлом.
    Для его нормальной работы необходимо чтобы в прошивке были модули acm.o и ipw.o, а также в ядре включен параметр CONFIG_USB_DEVPATH=y.
    Входные параметры скрипта которые надо задать:

    nvram set modem= может принимать значения gprs, cdma, dialup, ipw - это параметр зависит от того, какой у вас модем;
    nvram set apn= точка доступа для gprs и ipw модемов, например internet.mts.ru;
    nvram set dialnumber= номер набора для gprs и dialup модемов например *99#;
    nvram set dialinit= строка инициализации dialup модема;
    nvram set username= имя пользователя;
    nvram set ipwpin= пин код ipw модема;
    nvram set ipwclpin= пин код ipw модема;
    nvram set ipwmode= режим ipw модема.
    nvram set maxpacketsize= максимальный размер пакета ACM модема;
    nvram set vid= индентификатор модема;
    nvram set pid= индентификатор модема.

    Вот сам скрипт usbmodem.sh

    #!/bin/sh
    kill -9 $(ps|grep pppd|awk -F' ' '{print $1}') 2>/dev/null
    mkdir /tmp/ppp/
    mkdir /tmp/ppp/peers/
    apn=$(nvram get apn)
    dialnumber=$(nvram get dialnumber)
    dialinit=$(nvram get dialinit)
    ipwpin=$(nvram get ipwpin)
    ipwclpin=$(nvram get ipwclpin)
    ipwmode=$(nvram get ipwmode)
    modem=$(nvram get modem)
    username=$(nvram get username)
    vid=$(nvram get vid)
    pid=$(nvram get pid)
    maxpacketsize=$(nvram get maxpacketsize)
    if [ "$maxpacketsize" == "" ]; then
    insmod acm
    else
    insmod acm maxpacketsize=$maxpacketsize
    fi
    if [ "$vid" == "" -o "$pid" == "" ]; then
    insmod usbserial
    else
    insmod usbserial vendor=$vid product=$pid
    fi
    insmod pl2303
    insmod ftdi_sio
    insmod ipw
    echo "'' ''" > /tmp/ppp/peers/cdma.chat
    echo "'' 'ATZ'" >> /tmp/ppp/peers/cdma.chat
    echo "'OK' 'ATI'" >> /tmp/ppp/peers/cdma.chat
    echo "'OK' 'ATDT#777'" >> /tmp/ppp/peers/cdma.chat
    echo "'CONNECT' 'ATO'" >> /tmp/ppp/peers/cdma.chat
    echo "ABORT 'NO CARRIER'" > /tmp/ppp/peers/ipw.chat
    echo "'' ''" >> /tmp/ppp/peers/ipw.chat
    echo "'' 'ATZ'" >> /tmp/ppp/peers/ipw.chat
    echo "'OK' 'AT+CPIN?'" >> /tmp/ppp/peers/ipw.chat
    echo "'OK' 'AT+CPIN=$ipwpin'" >> /tmp/ppp/peers/ipw.chat
    echo "TIMEOUT 2" >> /tmp/ppp/peers/ipw.chat
    echo "OK-ATZ-OK 'ATZ'" >> /tmp/ppp/peers/ipw.chat
    echo "'OK' 'AT+CLCK=\"SC\",0,\"$ipwclpin\"'" >> /tmp/ppp/peers/ipw.chat
    echo "OK-ATZ-OK 'ATZ'" >> /tmp/ppp/peers/ipw.chat
    echo "TIMEOUT 30" >> /tmp/ppp/peers/ipw.chat
    echo "'OK' 'AT+CLCK=\"SC\",2'" >> /tmp/ppp/peers/ipw.chat
    echo "'OK' 'AT+CIMI'" >> /tmp/ppp/peers/ipw.chat
    echo "OK-AT+CIMI-OK 'AT+CGMI'" >> /tmp/ppp/peers/ipw.chat
    echo "'OK' 'AT+CGMM'" >> /tmp/ppp/peers/ipw.chat
    echo "'OK' 'AT+CGMR'" >> /tmp/ppp/peers/ipw.chat
    echo "'OK' 'AT+CSQ'" >> /tmp/ppp/peers/ipw.chat
    echo "'OK' 'AT+CBC'" >> /tmp/ppp/peers/ipw.chat
    echo "'' 'AT+CFUN=4,$ipwmode'" >> /tmp/ppp/peers/ipw.chat
    echo "'' 'AT+CGATT?'" >> /tmp/ppp/peers/ipw.chat
    echo "'' 'AT+CGSN'" >> /tmp/ppp/peers/ipw.chat
    echo "'CGSN:' 'AT+COPS?'" >> /tmp/ppp/peers/ipw.chat
    echo "\\\"-AT+COPS?-OK 'AT&FE1Q0V1&C1&D2S0=0S7=60&K3N1'" >> /tmp/ppp/peers/ipw.chat
    echo "'OK' 'AT+CGDCONT=1,\"PPP\",\"$apn\",\"0,0\",0,0'" >> /tmp/ppp/peers/ipw.chat
    echo "ABORT ERROR" >> /tmp/ppp/peers/ipw.chat
    echo "'OK' 'ATDT*99#'" >> /tmp/ppp/peers/ipw.chat
    echo "'CONNECT' ''" >> /tmp/ppp/peers/ipw.chat
    echo "'' ''" > /tmp/ppp/peers/dialup.chat
    echo "'' 'ATI'" >> /tmp/ppp/peers/dialup.chat
    echo "'' 'ATZ'" >> /tmp/ppp/peers/dialup.chat
    echo "$dialinit" >> /tmp/ppp/peers/dialup.chat
    echo "'OK' 'ATD$dialnumber'" >> /tmp/ppp/peers/dialup.chat
    echo "'CONNECT' ''" >> /tmp/ppp/peers/dialup.chat
    echo "'' ''" > /tmp/ppp/peers/gprs.chat
    echo "'' 'ATZ'" >> /tmp/ppp/peers/gprs.chat
    echo "'OK' 'ATI'" >> /tmp/ppp/peers/gprs.chat
    echo "'OK' 'AT+COPS?'" >> /tmp/ppp/peers/gprs.chat
    echo "'OK' 'AT+CGDCONT=1,\"IP\",\"$apn\"'" >> /tmp/ppp/peers/gprs.chat
    echo "'OK' 'ATD$dialnumber'" >> /tmp/ppp/peers/gprs.chat
    echo "'CONNECT' ''" >> /tmp/ppp/peers/gprs.chat
    echo $(cat /proc/bus/usb/devpath | grep -o "/.*" | awk -F ':' '{print $1}') > /tmp/ppp/peers/$modem
    echo "debug" >> /tmp/ppp/peers/$modem
    echo "crtscts" >> /tmp/ppp/peers/$modem
    echo "noipdefault" >> /tmp/ppp/peers/$modem
    echo "ipcp-accept-local" >> /tmp/ppp/peers/$modem
    echo "lcp-echo-interval 60" >> /tmp/ppp/peers/$modem
    echo "lcp-echo-failure 5" >> /tmp/ppp/peers/$modem
    echo "usepeerdns" >> /tmp/ppp/peers/$modem
    echo "noauth" >> /tmp/ppp/peers/$modem
    echo "nodetach" >> /tmp/ppp/peers/$modem
    echo "user \"$username\"" >> /tmp/ppp/peers/$modem
    echo "connect \"/usr/sbin/chat -s -S -V -t 30 -f /tmp/ppp/peers/$modem.chat 2>/tmp/chat.log\"" >> /tmp/ppp/peers/$modem
    pppd call $modem >> /tmp/chat.log

    Ily, предлагаю скрипт внести в исходный код others.diff с компиляцией скрипта в папку /usr/sbin c правами 755, включить модули acm.o ipw.o и параметр ядра CONFIG_USB_DEVPATH=y.
    В дальнейшем останется только сделать веб морду. Но тем, кому очень надо смогут пользоваться USB модемами прямо сейчас.

    P.S. Сейчас пишу через Nokia N81 и роутер на котором запущен этот скрипт.
    Last edited by sorine; 12-02-2009 at 18:23.

  11. #71
    Join Date
    Feb 2007
    Location
    Moscow, Russia
    Posts
    3,805
    да, пожалуй. Возможно, в этом и есть причина, почему Олег не добавил эту фичу сам. У него в прошивке не пишется ничего в flashfs. Хотя почему --- до конца не понятно, т.к. flashfs неотъемлемая часть прошивки.

    О, кстати, я не прав --- /tmp/local/root создается. Впрочем, нет. Он создается при каждой загрузке и при этом не сохраняется.

    В общем, идея была сделать запуск доступного извне ssh полностью независимым от ситуации --- отвала внешнего носителя и даже flashfs. Типа чтобы даже в самом, самом крайнем хреновом случае можно было бы дать комманду переткнуть питание и все.

    Мне видится следующая логика:
    1) если flashfs disabled, то do nothing
    2) если enabled, то проверить наличие /tmp/local/etc/dropbear
    3) если его нету, то сгенерить ключи и сохранить flashfs

    Коллеги, что скажете?

  12. #72
    Join Date
    Feb 2007
    Location
    Moscow, Russia
    Posts
    3,805
    есть еще один вариант. Хранить ключ в nvram. Места там хватает.

    Тогда можно сделать так:
    1) если ключей в nvram нет, то сгенерить их
    2) если flashfs disabled то создать /tmp/local/etc/dropbear и развернуть туда ключи (flashfs не сохраняем --- оставляем это на совести юзера)
    3) если enabled то проверить наличие директории и при необходимости развернуть туда же (flashfs либо сохранить, либо нет --- вроде без большой разницы)

    ключ в nvram можно хранить в текстовом формате.

    Единственная проблема остается --- если юзер сгенерит ключи сам, то в flashfs и в nvram будут храниться разные ключи. Однако, функциональность будет сохранена в любом случае.

    Кстати, любопытный вопрос. Размер nvram составляет 64К:
    PHP Code:
    cat /proc/mtd grep nvram
    mtd3
    00010000 00010000 "nvram" 
    С другой стороны, объем используемой памяти составляет ровно 32768 байт:
    PHP Code:
    nvram show > /dev/null
    size
    11633 bytes (21135 left
    Сидит эта цифра в макросе NVRAM_SPACE объявленном как 0x8000. Выходит, что 32К пропадают совсем впустую.

  13. #73
    Join Date
    Dec 2003
    Location
    Russian Federation
    Posts
    8,353
    О как. Оказывается существует такая ветка.

    Я сейчас времени кодировать не имею особо, но подсказать могу.

    Спрашивайте конечно.

    У меня остались какие-то исправления, я планировал выпустить обновления для 1.9.2.7-9 и 10. Может ещё и выпущу. Там нужно хорошо поразбираться ещё раз с PPTP/PPPoE/L2TP со свзякой с DHCP и DNS. Какие-то грабли там остались, в основном из попыток скрестить ужа с ежом. По хорошему, там вообще нужно переделать веб-интерфейс, чтобы логика была максимально приближена к форточкам. И убить MAN в маршрутах, назвав его WAN.

    Что касается dropbear и генерации ключей. У меня была задумка, нереализованная, добавить дефолтный стартовый скрипт, который бы автоматом генерировал ключи и сохранял их во flashfs при необходимости. Тогда в post-boot нужно было бы только этот скрипт запустить.

    От хранения ключей в nvram я отказался (изначально так и было) после добавления flashfs, т.к. это сильно упростило запуск dropbear да и других программ - ключ не нужно было перепаковывать туда-сюда. Кроме того, с nvram есть подстава. Размер всего 32к, который имеет свойства заканчиваться. Поглядите на dd-wrt: там постоянно проблемы c nvram. В общем это место я решил не использовать тогда.

    ЗЫ: Сейчас у меня на столе лежит инженерный образец ASUS RT-N16. BCM4718@533Mhz, 128MB DDR2 RAM, дофига флеша (типа 32мегабайта, не помню), гигабит, 802.11n, 2xUSB 2.0. В продаже ожидается летом. Цена, думаю будет в районе 150 долларов.

  14. #74
    Join Date
    Nov 2006
    Location
    Russia, Moscow
    Posts
    3,640
    Quote Originally Posted by Oleg View Post
    О как. Оказывается существует такая ветка.
    Стараемся выжать максимум из того что есть
    Я сейчас времени кодировать не имею особо, но подсказать могу.
    Парочка вопросов есть:
    1. Не помнишь зачем добавлялся к pptp route_add() ?
      http://wl500g.info/showthread.php?p=115389#post115389
      http://wl500g.info/showthread.php?t=14081&page=2
    2. Почему ты не стал включать CONFIG_PACKET_MMAP? Для большинства это лишнее?

    ЗЫ: Сейчас у меня на столе лежит инженерный образец ASUS RT-N16. BCM4718@533Mhz, 128MB DDR2 RAM, дофига флеша (типа 32мегабайта, не помню), гигабит, 802.11n, 2xUSB 2.0.
    Я надеюсь хоть ядро там 2.6? Broadcom опять всё в бинарниках поставляет?

  15. #75
    Join Date
    Dec 2003
    Location
    Russian Federation
    Posts
    8,353
    Quote Originally Posted by lly View Post
    Стараемся выжать максимум из того что есть

    Парочка вопросов есть:
    1. Не помнишь зачем добавлялся к pptp route_add() ?
      http://wl500g.info/showthread.php?p=115389#post115389
      http://wl500g.info/showthread.php?t=14081&page=2
    2. Почему ты не стал включать CONFIG_PACKET_MMAP? Для большинства это лишнее?
    1) Да, вот он глюк о котором я написал выше. Маршрут добавляться должен, иначе Корбина и похожие на неё работать перестанут, т.к. у них адрес впн сервера совпадает с пиром, который используется ппп. В данном случае маршрут не стоило добавлять, т.к. сервер находится в одной сети с роутером. Я это переделывал в 9/10 прошивке, в предыдущих код был немного другим и таких вещей не происходило, но были какие-то другие несчастья, при исправлении которых я испортил логику. Где-то я убрал проверку гейта. Зачем-то. В общем сравни этот кусок в разных версиях. МОжешь сюда запостить оба варианта, я тоже гляну. В L2TP должен быть точно такой же код.

    2) А нафига он? Я вообще воздерживался от включения многих фич по одной причине - мало места. Единственное, что включать нельзя - ebtables, т.к. фаервол наш начнёт работать неправильно.

    Я надеюсь хоть ядро там 2.6? Broadcom опять всё в бинарниках поставляет?
    Я его не включал. Т.е. включил вслепую, проверил, что в режиме восстановления он входит и сразу выключил. При случае гляну. А вообще плата приятная в том плане, что на ней есть jtag.

Page 5 of 393 FirstFirst ... 345671555105 ... LastLast

Similar Threads

  1. WiFidog на прошивке Олега и энтузиастов
    By semen-demon in forum Russian Discussion - РУССКИЙ (RU)
    Replies: 10
    Last Post: 29-08-2013, 10:08
  2. Replies: 83
    Last Post: 11-12-2012, 19:31
  3. Прошивка Олега на роутере DIR-320
    By sorine in forum Russian Discussion - РУССКИЙ (RU)
    Replies: 4359
    Last Post: 07-08-2011, 22:25
  4. Replies: 204
    Last Post: 28-06-2011, 20:08
  5. Архив - Прошивка 1.9.2.7-d/-rtn от энтузиастов
    By AndreyPopov in forum Russian Discussion - РУССКИЙ (RU)
    Replies: 477
    Last Post: 23-02-2009, 16:29

Tags for this Thread

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •