Pavlin Radoslavov wrote:
> illidan <[email protected]> wrote:
>
>
>> Pavlin Radoslavov wrote:
>>
>>> illidan <[email protected]> wrote:
>>>
>>>
>>>
>>>> Hello,
>>>>
>>>> I was trying to open a socket using socket4 library.
>>>> I used function send_tcp_open_and_bind :
>>>>
>>>> create_socket.cc :
>>>> void SocketServer::get_create_socket() {
>>>> XorpCallback2<void, const XrlError&, const string*>::RefPtr cb;
>>>> IPv4 localIP("10.10.10.10");
>>>> int localPort = 100;
>>>> cb = callback(this,&SocketServer::get_socket_id);
>>>>
>>>> send_tcp_open_and_bind("fea",_rtr.instance_name(),localIP,localPort,cb);
>>>>
>>>> }
>>>> void SocketServer::get_socket_id(const XrlError& e,const string* id) {
>>>> if(e==XrlCmdError::OKAY()) {
>>>> fprintf(stderr,"I receive the response : %s\n",id->c_str());
>>>> _socket_id = id->c_str();
>>>> listen();
>>>> return;
>>>> }
>>>> }
>>>>
>>>> When I run this program, I receive correctly the socket_id, but I
>>>> get an error in rtrmgr process :
>>>>
>>>> "[ 2009/02/16 13:11:01 WARNING xorp_rtrmgr:32679 XrlFinderTarget
>>>> +721 ../xrl/targets/finder_base.cc
>>>> handle_finder_event_notifier_0_1_register_instance_event_interest ]
>>>> Handling method for
>>>> finder_event_notifier/0.1/register_instance_event_interest failed:
>>>> XrlCmdError 102 Command failed failed to add watch
>>>> [ 2009/02/16 13:11:01 ERROR xorp_fea:32681 FEA +128 xrl_fea_io.cc
>>>> register_instance_event_interest_cb ] Failed to register event
>>>> interest in instance create_socket: 102 Command failed failed to
>>>> add watch"
>>>>
>>>> What could be the problem? Did I do something wrong??
>>>>
>>> Was your create_socket program still running, and in READY state?
>>>
>>> You can verify both by using the following XRL by hand (you need to
>>> replace "fea" with the target name of your module):
>>> libxipc/call_xrl finder://fea/common/0.1/get_status
>>>
>>> If everything is normal you should see the following output:
>>> status:u32=3&reason:txt=
>>>
>> In fact, create_socket was not a process but a tool.
>> I did it like bgp/tools/xorpsh_print_peers.
>> I have my own process (call consensus), but I don't really know
>> when to start the tcp socket. So I did this tool to try to open a
>> socket (like a tester).
>>
>> I just try to create my socket in consensus
>>
>> XrlCmdError
>> ConsensusTarget::consensus_0_1_add_ip(const string& ip) {
>> _ip = ip;
>> // I try to create my socket
>> XLOG_INFO("%s\n", "Starting up CONSENSUS");
>> SocketServer socket(_rtr,_eventloop);
>> socket.get_create_socket();
>> return XrlCmdError::OKAY();
>> }
>>
>
> The issue seems to be that the SocketServer instance is created on
> the stack so it will be destroyed when you return from the above
> consensus_0_1_add_ip() method. You should make it a member of class
> ConsensusTarget.
>
> Regards,
> Pavlin
>
>
Thanks It works!
What is the difference between open a socket with fea or open a socket
with libcomm?
Thanks for your help!
>> I run rtrmgr with the config file "static.boot and I add a consensus
>> IP with CLI. When I add the IP and "commit" it makes an error and
>> kill my process :
>>
>> Starting consensus protocol
>> [ 2009/02/16 23:00:34 TRACE xorp_rtrmgr RTRMGR ] Validating with XRL:
>> >finder://consensus/common/0.1/get_status<
>> [ 2009/02/16 23:00:34 TRACE xorp_rtrmgr RTRMGR ] Expanding xrl
>> $(consensus.targetname)/consensus/0.1/add_ip?ip:txt=$(@)
>> [ 2009/02/16 23:00:34 TRACE xorp_rtrmgr RTRMGR ] Executing XRL:
>> >finder://consensus/consensus/0.1/add_ip?ip:txt=10.10.10.1<
>> [ 2009/02/16 23:00:34 INFO xorp_consensus CONSENSUS ] Starting up
>> CONSENSUS
>> [ 2009/02/16 23:00:34 INFO xorp_consensus CONSENSUS ] Starting up
>> CONSENSUS
>> [ 2009/02/16 23:00:34 TRACE xorp_rtrmgr RTRMGR ] Validating with XRL:
>> >finder://consensus/common/0.1/get_status<
>> [ 2009/02/16 23:00:34 INFO xorp_rtrmgr:13806 RTRMGR +2233 task.cc
>> run_task ] No more tasks to run
>> [ 2009/02/16 23:00:34 TRACE xorp_rtrmgr RTRMGR ]
>> apply_config_change_done: status: 1 response: target:
>> xorpsh-13811-my_computer
>> [ 2009/02/16 23:00:34 ERROR xorp_rtrmgr:13806 RTRMGR +754
>> module_manager.cc done_cb ] Command
>> "path_to_xorp/consensus/xorp_consensus": terminated with signal 11.
>> [ 2009/02/16 23:00:34 INFO xorp_rtrmgr:13806 RTRMGR +299
>> module_manager.cc module_exited ] Module abnormally killed: consensus
>>
>> And apparently the process has not been started :
>> #./call_xrl finder://consensus/common/0.1/get_status
>> [ 2009/02/16 23:03:05 ERROR call_xrl:13896 XRL +57 call_xrl.cc
>> response_handler ] Failed. Reason: 201 Resolve failed
>> ("finder://consensus/common/0.1/get_status")
>> [ 2009/02/16 23:03:06 WARNING call_xrl XRL ] request:
>> finder://consensus/common/0.1/get_status resolve failed
>> [ 2009/02/16 23:03:06 WARNING call_xrl XRL ] request:
>> finder://consensus/common/0.1/get_status failed after 0 retries
>> [ 2009/02/16 23:03:06 ERROR call_xrl:13896 XRL +231 call_xrl.cc
>> input_cmds ] No callback: finder://consensus/common/0.1/get_status
>> Stopping.
>>
>> What did I do wrong??
>>
>> Thanks for your help!
>>
>> Michael
>>
>>> FYI, the values for the static codes are listed in
>>> libxorp/status_codes.h and the value for PROC_READY is 3.
>>>
>>> Regards,
>>> Pavlin
>>>
>>>
>>>
>>>> Thanks
>>>>
>>>> Michael
>>>>
>>>> _______________________________________________
>>>> Xorp-hackers mailing list
>>>> [email protected]
>>>> http://mailman.ICSI.Berkeley.EDU/mailman/listinfo/xorp-hackers
>>>>
>> _______________________________________________
>> Xorp-hackers mailing list
>> [email protected]
>> http://mailman.ICSI.Berkeley.EDU/mailman/listinfo/xorp-hackers
>>
_______________________________________________
Xorp-hackers mailing list
[email protected]
http://mailman.ICSI.Berkeley.EDU/mailman/listinfo/xorp-hackers