Гость
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / rlm_mq - accounting module for FreeRADIUS to work with MQSeries / 16 сообщений из 16, страница 1 из 1
04.08.2004, 16:24
    #32635380
ggv
ggv
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
rlm_mq - accounting module for FreeRADIUS to work with MQSeries
http://www.bicekru.org/~ggv
I think today I'll change it a bit - will add acct-session-id to leg.x
...
Рейтинг: 0 / 0
17.08.2004, 19:29
    #32653621
Новый Год
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
rlm_mq - accounting module for FreeRADIUS to work with MQSeries
oops! не увидел сразу -- был в отпуске. посмотрю завтра-послезавтва.
...
Рейтинг: 0 / 0
17.08.2004, 20:34
    #32653666
Новый Год
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
rlm_mq - accounting module for FreeRADIUS to work with MQSeries
ничего не понятно в radius.

зачем у тебя имена очередей приводятся в uppercase, когда они чувствительны к регистру?

зачем commit/rollback? ты вроде put только одно сообщение, или я что-то не увидел.. MQPMO_NO_SYNCPOINT... у тебя даже сообщения не persistent, я не вижу, что здесь должна быть транзакция...
...
Рейтинг: 0 / 0
17.08.2004, 21:08
    #32653686
Новый Год
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
rlm_mq - accounting module for FreeRADIUS to work with MQSeries
int mq_init_pool(struct MQ_INST * inst)
..........


if(connect_single(inst, mqconn) == 0) success = 1;

/* Add this conn to the list of connections */
mqconn->next = inst->pool;
inst->pool = mqconn;
}
inst->last_used = NULL;

if (!success) {
radlog(L_DBG, "rlm_mq: Failed to connect to queue manager.");
return -1;
}


эта ... при ошибку на MQOPEN напишет

"rlm_mq: Failed to open #%d queue %s with reason %ld"
"rlm_mq: Failed to connect to queue manager."

ползователь офигеет -- это мы проходили...
...
Рейтинг: 0 / 0
17.08.2004, 21:10
    #32653688
нг
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
rlm_mq - accounting module for FreeRADIUS to work with MQSeries
нет.
...
Рейтинг: 0 / 0
17.08.2004, 21:53
    #32653711
ggv
ggv
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
rlm_mq - accounting module for FreeRADIUS to work with MQSeries
"ничего не понятно в radius."
Can I help somehow?

"зачем у тебя имена очередей приводятся в uppercase, когда они чувствительны к регистру?"
platform - solaris.

define qlocal(My.Queue) + bla-bla-bla
radiusd -X connected correctly, queue name in uppercase. I have found that if queue name is not in uppercase - I won't connect. Probably in the doc there is something about solaris. Will check Linux/Aix

"ползователь офигеет -- это мы проходили..."
Thank - fixed.

Any other suggestions?
Thank you NewYear.
Could you have a look at http://bicekru.org/~ggv/doc ?
Any notes/suggestions are welcome.
...
Рейтинг: 0 / 0
17.08.2004, 22:46
    #32653729
ggv
ggv
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
rlm_mq - accounting module for FreeRADIUS to work with MQSeries
Oops, forgot to say - file mq.c, line 138
pmo.Options |= MQPMO_SYNCPOINT;

And - it's nit for one PUT.
FreeRADIUS is multithreaded application, and each thread will serve many accounting request, each one accounting request will be a message and requires PUT and MQCMIT.
...
Рейтинг: 0 / 0
18.08.2004, 10:39
    #32654111
Hовый Год
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
rlm_mq - accounting module for FreeRADIUS to work with MQSeries
>define qlocal(My.Queue) + bla-bla-bla
нужно define qlocal('My.Queue') + bla-bla-bla

я не работаю с solaris, но сильно сомневаюсь, что там очереди в uppercase
define qlocal(My.Queue) + bla-bla-bla сделает очередь в uppercase, точно. чтобы создалась не в uppercase, нужно взять ее в кавычки -- MQSC фича. у тебя была ошибка 2085?

буду смотреть дальше. к сожалению, у меня нет никакой машины под unix, где я мог бы это собрать и запустить. доку не читал, но прочитаю.
...
Рейтинг: 0 / 0
18.08.2004, 10:55
    #32654156
ggv
ggv
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
rlm_mq - accounting module for FreeRADIUS to work with MQSeries
"чтобы создалась не в uppercase, нужно взять ее в кавычки -- MQSC" - got it, thanks. probably I did not read the doc carefully, but I did not remember something about queue names.
Now I may get out upper().
...
Рейтинг: 0 / 0
20.08.2004, 17:15
    #32659645
ggv
ggv
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
rlm_mq - accounting module for FreeRADIUS to work with MQSeries
There is an error - one MQHCONN shared by all threads of the same instance of the module.
It means MQBACK or MQCMIT in one thread will commit/rollbak work in others.
Fixing.
...
Рейтинг: 0 / 0
20.08.2004, 17:47
    #32659704
Новый Год
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
rlm_mq - accounting module for FreeRADIUS to work with MQSeries
да, на моей практике hconn может быть только один на процесс. я не знал, как MQCONN ведет себя в случае с multithread, поэтому не поднял тему. я думаю, это не пофиксишь.

тебе ничего там на стоит убрать MQCMIT/MQBACK, не так ли?
...
Рейтинг: 0 / 0
20.08.2004, 18:54
    #32659787
Новый Год
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
rlm_mq - accounting module for FreeRADIUS to work with MQSeries
смотрим в доку.

int mq_conn(struct MQ_INST *inst){

MQLONG CompCode, Reason;
MQCNO Connect_options = {MQCNO_DEFAULT};

if(inst->config->mq_fastpath){
Connect_options.Options = MQCNO_FASTPATH_BINDING;

radlog(L_DBG, "rlm_mq : using MQCN_FASTPATH_BINDING");
}

radlog(L_DBG, "rlm_mq: Attempting to connect %s",
inst->config->mq_qmngr);
/* Connecting to Queue Manager */
MQCONNX(inst->config->mq_qmngr, &Connect_options, &inst->Hcon, &CompCode, &Reason);

if(CompCode == MQCC_FAILED){
/*
* Error
*/
radlog(L_CONS | L_ERR,
"rlm_mq: Failed to connect MQ handle to queue manager %s with reason %ld",
inst->config->mq_qmngr, (long)Reason);
return -1;

else
if(CompCode == MQCC_WARNING && Reason == 2002)
radlog(L_CONS | L_ERR,
"rlm_mq: Seems you are connected yet to %s, probably in another instance of rlm_mq, it's not an error",
inst->config->mq_qmngr);
else
if(CompCode == MQCC_WARNING && Reason != 2002)
radlog(L_CONS | L_ERR,
"rlm_mq: Got a warning when connected to queue manager %s with reason %ld",
inst->config->mq_qmngr, (long)Reason);

return 0;


}

может, так?

Connect_options.Options = MQCNO_FASTPATH_BINDING |MQCNO_HANDLE_SHARE_NONE
...
Рейтинг: 0 / 0
21.08.2004, 09:29
    #32659980
ggv
ggv
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
rlm_mq - accounting module for FreeRADIUS to work with MQSeries
Programmers guide, file csqzal09.pdf, page 91, section "Scope of MQCONN or MQCONNX"
"Within WebSphere MQ for iSeries, MQSeries for Compaq OpenVMS
Alpha, MQSeries for OS/2 Warp, WebSphere MQ on Unix systems
and WebSphere MQ for WIndows, the scope of an MQCONN or
MQCONNX call is usually the thread that issued it. That is,
the connection handle returned from the call is valid only
within the thread that issued the call.
............
If you have multiple threads in your application and each
wishes to use WebSphere MQ calls, each one must individually
issue MQCONN or MQCONNX."

page 94
"In the normal MQI environment the default value is
MQCNO_HANDLE_SHARE_NONE"
...
Рейтинг: 0 / 0
21.08.2004, 11:16
    #32660013
ggv
ggv
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
rlm_mq - accounting module for FreeRADIUS to work with MQSeries
NewYear - just a simple example.

#include <stdio.h>
#include <stdlib.h>
#include <cmqc.h>
#include <pthread.h>
#include <unistd.h>

static void *dowork(void *arg){

MQHCONN mqconn;
MQLONG CompCode, Reason;

MQCNO Connect_options = {MQCNO_DEFAULT};

MQCONNX("sms", &Connect_options, &mqconn, &CompCode, &Reason);

if(CompCode != MQCC_OK){

fprintf(stderr, "Connection returned %ld\n", (long)Reason);
return NULL;

}
printf("thread %ld connected\n", (long)pthread_self());

sleep(10);
return NULL;

}

int main(){

pthread_attr_t attr;
pthread_t tid;
int i;

if(pthread_attr_init(&attr) != 0){

fprintf(stderr, "could not init attr\n");
exit(1);

}

for(i=0; i<3; ++i){

if(pthread_create(&tid, &attr, dowork, NULL) != 0){

fprintf(stderr, "Could not create thread\n");
exit(1);

}
}
sleep(15);
return 0;

}

cc -I /opt/mqm/inc/ -L /opt/mqm/lib -l mqm -mt test.c
or
gcc -Wall -I /opt/mqm/inc/ -L /opt/mqm/lib -l mqm test.c
and we got
./a.out
thread 3 connected
thread 2 connected
thread 4 connected

rlm_mq got an logical error. I have taken a logic from existing rlm_sql, and just changed SQL stuff to MQ stuff.
This was my mistake :) Ok, will fix.
but MQCONN works in threads as described in the doc.
...
Рейтинг: 0 / 0
21.08.2004, 13:41
    #32660066
ggv
ggv
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
rlm_mq - accounting module for FreeRADIUS to work with MQSeries
Here how it is - two post above when I put a quotation from page 91, and I did skip very important statement.
"If it is used from a different thread, it will be rejected as invalid".
That's it. It means there is not way to make a pool of MQHCONN and use them from threads.
Actually, rlm_mq is new stuff, was not used before, before I used door_x (3door) - SUN door interface, where each request from freeradius passed to door-server, and server created a new thread, which created each own MQHCONN. But door_x () is not portable.
Anyhow, everything is clear now. Each thread has to create each own MQHCONN, otherways - Reason 2018.
...
Рейтинг: 0 / 0
22.08.2004, 08:27
    #32660212
ggv
ggv
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
rlm_mq - accounting module for FreeRADIUS to work with MQSeries
s/otherways/otherwise blin
...
Рейтинг: 0 / 0
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / rlm_mq - accounting module for FreeRADIUS to work with MQSeries / 16 сообщений из 16, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]