<div>Hi, Murphy and William,</div><div> </div><div>Sorry about my late reply. My code is similar to william's but didn't work in original cases.</div><div> </div><div>I just referred to William's patch and it worked fine now. I got each port's number and statstics as well. </div>
<div> </div><div>I really appreciate you helped me a a lot to figure it out.</div><div> </div><div>Best</div><div> </div><div>Weiyang<br><br></div><div class="gmail_quote">2012/9/20 Murphy McCauley <span dir="ltr"><<a href="mailto:murphy.mccauley@gmail.com" target="_blank">murphy.mccauley@gmail.com</a>></span><br>
<blockquote style="margin:0px 0px 0px 0.8ex;padding-left:1ex;border-left-color:rgb(204,204,204);border-left-width:1px;border-left-style:solid" class="gmail_quote">Glad you got it working.  Can you submit your patch as a pull request against betta on github? (I want to at least make a comment on it)<br>

<span class="HOEnZb"><font color="#888888"><br>
-- Murphy<br>
</font></span><div class="HOEnZb"><div class="h5"><br>
On Sep 20, 2012, at 8:38 PM, William Emmanuel Yu wrote:<br>
<br>
> Hi Murphy,<br>
><br>
> Yes. Flows show up fine. However, no port statistics are visible. I also<br>
> did a Wireshark as suggested. After installing flows and successfully<br>
> seeing them flow statistics, I requested for port statistics (OF Type 16<br>
> Stats Type 4 - PORT Port #0). I get a proper reply (OF Type 17 Stats<br>
> Type 4 - PORT) but it has no payload.<br>
><br>
> I looked at the class ofp_port_stats_request (object) in<br>
> libopenflow_01.py and found out port_no is set to 0 by default. In the<br>
> openflow 1.0 specification, this should be set to OFPP_NONE to return<br>
> all port statistics.<br>
><br>
> <a href="https://github.com/hip2b2/poxstuff/blob/master/libopenflow_01.py.ANY_PORT.patch" target="_blank">https://github.com/hip2b2/poxstuff/blob/master/libopenflow_01.py.ANY_PORT.patch</a><br>
><br>
> After this, it now works!<br>
><br>
> On Thu, 2012-09-20 at 18:57 -0700, Murphy McCauley wrote:<br>
>> Are you sure there's anything wrong here?  Are you actually installing flows?<br>
>><br>
>> Port 65534 is OFPP_LOCAL; this flow is apparently permanently installed.  I don't offhand know exactly why, but it's probably to enable communication with the controller or something.<br>
>><br>
>> If I actually install flows, they show up just fine for me.  Run flow_stats and forwarding.l2_learning at the same time, and then do a ping between hosts on your switches.  No problem here -- flows show up just fine.<br>

>><br>
>> -- Murphy<br>
>><br>
>> On Sep 20, 2012, at 5:43 PM, William Emmanuel Yu wrote:<br>
>><br>
>>> Here is the code I used to test:<br>
>>> <a href="https://github.com/hip2b2/poxstuff/blob/master/flow_stats.py" target="_blank">https://github.com/hip2b2/poxstuff/blob/master/flow_stats.py</a><br>
>>><br>
>>> I still don't know how to attach debugging into Pox to dig deeper. Is<br>
>>> there documentation on how to do that? Worst case, I will just have to<br>
>>> put debugging stuff in the pox code itself.<br>
>>><br>
>>> Thanks.<br>
>>><br>
>>> On Thu, 2012-09-20 at 17:02 -0700, Murphy McCauley wrote:<br>
>>>> can one or both of you post code to test?<br>
>>>><br>
>>>> On Sep 20, 2012 3:00 PM, "William Emmanuel S. Yu" <<a href="mailto:wyu@ateneo.edu">wyu@ateneo.edu</a>><br>
>>>> wrote:<br>
>>>>       Same here. Still trying to find out what is wrong.<br>
>>>>       "Sent on the move."<br>
>>>><br>
>>>>       ______________________________________________________________<br>
>>>>       From: Weiyang Mo <<a href="mailto:moweiyang1988@gmail.com">moweiyang1988@gmail.com</a>><br>
>>>>       Date: Thu, 20 Sep 2012 14:53:44 -0700<br>
>>>>       To: William Emmanuel Yu<<a href="mailto:wyu@ateneo.edu">wyu@ateneo.edu</a>>; Murphy<br>
>>>>       McCauley<<a href="mailto:murphy.mccauley@gmail.com">murphy.mccauley@gmail.com</a>><br>
>>>>       Cc: <<a href="mailto:pox-dev@lists.noxrepo.org">pox-dev@lists.noxrepo.org</a>><br>
>>>>       Subject: Re: [pox-dev] How can POX get packet counts (or beta<br>
>>>>       transferred) from a switch within a timeline.<br>
>>>><br>
>>>><br>
>>>>       Hi,William<br>
>>>><br>
>>>>       I got the same problems on my side.  I already tried both on<br>
>>>>       "betta" and Murphy fork.<br>
>>>><br>
>>>>       It seems that whatever the traffic goes through switches, the<br>
>>>>       returned switch port number is always "65534" and bytes_rx<br>
>>>>       always 0 thus I cannot get packet counts from a specific port<br>
>>>>       correctly.<br>
>>>><br>
>>>>       Any advice?<br>
>>>><br>
>>>>       Thanks very much.<br>
>>>><br>
>>>>       Weiyang<br>
>>>><br>
>>>><br>
>>>>       2012/9/19 William Emmanuel Yu <<a href="mailto:wyu@ateneo.edu">wyu@ateneo.edu</a>><br>
>>>>               Hi Weiyang,<br>
>>>><br>
>>>>               Yes. You should be using port stats for that. So I<br>
>>>>               tried it myself but<br>
>>>>               now I do not get any port stats data. Here is my code.<br>
>>>>               It's empty. I am<br>
>>>>               using the Murphy fork.<br>
>>>><br>
>>>>               On the multiple listeners, yes you can specify various<br>
>>>>               actions within<br>
>>>>               the callback function. In my emailed sample, I just<br>
>>>>               log.debug() the<br>
>>>>               output but you can do anything you like such as write<br>
>>>>               to a database and<br>
>>>>               the like.<br>
>>>><br>
>>>>               Good luck!<br>
>>>><br>
>>>>               On Thu, 2012-09-20 at 15:10 +1200, Sam Russell wrote:<br>
>>>>> What would it take to get your mods back into<br>
>>>>               mainstream? Is there any<br>
>>>>> tidying or the like that we can help with?<br>
>>>>><br>
>>>>> Sent from my iPhone<br>
>>>>><br>
>>>>> On Sep 20, 2012, at 3:07 PM, Murphy McCauley<br>
>>>>> <<a href="mailto:murphy.mccauley@gmail.com">murphy.mccauley@gmail.com</a>> wrote:<br>
>>>>><br>
>>>>><br>
>>>>><br>
>>>>>> I think that's a known problem.<br>
>>>>>><br>
>>>>>><br>
>>>>>> The official noxrepo fork currently has a number<br>
>>>>               of known bugs which<br>
>>>>>> are addressed in my fork (MurphyMc/pox), and my<br>
>>>>               fork has a number of<br>
>>>>>> other improvements.  One of these days, the<br>
>>>>               changes in my fork will<br>
>>>>>> be upstreamed, but for the moment, you should<br>
>>>>               really just pull POX<br>
>>>>>> from me instead of noxrepo.<br>
>>>>>><br>
>>>>>><br>
>>>>>> -- Murphy<br>
>>>>>><br>
>>>>>><br>
>>>>>> On Sep 19, 2012, at 7:33 PM, Weiyang Mo wrote:<br>
>>>>>><br>
>>>>>>> Hi, William,<br>
>>>>>>><br>
>>>>>>> Thanks very much. But I still have some<br>
>>>>               questions about getting<br>
>>>>>>> statistics.<br>
>>>>>>><br>
>>>>>>> As mentioned in POX wiki, We can use different<br>
>>>>               statistics event to<br>
>>>>>>> get different types of statistics. What I want<br>
>>>>               to get from a<br>
>>>>>>> switch is (1) it's switch ID (DPID) (2) all<br>
>>>>               packet counts on each<br>
>>>>>>> port<br>
>>>>>>><br>
>>>>>>> If I only use<br>
>>>>>>><br>
>>>>               "core.openflow.addListenerByName("FlowStatsReceived",<br>
>>>>>>> statsreceived)", the things I can get is that<br>
>>>>               the total packet<br>
>>>>>>> counts from all ports, but no DPID or inport<br>
>>>>               number. Thus I guess<br>
>>>>>>> I may need use<br>
>>>>>>> "of.ofp_port_stats_request()" and<br>
>>>>>>><br>
>>>>               core.openflow.addListenerByName("PortStatsReceived",<br>
>>>>>>> statsreceived)<br>
>>>>>>> But here I meet with a problem. I tried similar<br>
>>>>               things as<br>
>>>>>>> ofp_flow_stats_request() as follows:<br>
>>>>>>><br>
>>>>>>> def countrequest ():<br>
>>>>>>> swnum = 0<br>
>>>>>>> for connection in<br>
>>>>               core.openflow._connections.values():<br>
>>>>>>>   req1 = of.ofp_port_stats_request()<br>
>>>>>>>   re1 = of.ofp_stats_request(body = req1)<br>
>>>>>>>   connection.send(re1)<br>
>>>>>>><br>
>>>>>>> -----------------------------------<br>
>>>>>>> In the launch() function, I do the following:<br>
>>>>>>> Timer(5, countrequest, recurring = True)<br>
>>>>>>> It reports an error which will not happend to<br>
>>>>>>> ofp_flow_stats_request()<br>
>>>>>>><br>
>>>>>>> Traceback (most recent call last):<br>
>>>>>>> File<br>
>>>>               "/home/openflow/pox/pox/lib/recoco/recoco.py", line<br>
>>>>               276, in<br>
>>>>>>> cycle<br>
>>>>>>>   rv = t.execute()<br>
>>>>>>> File<br>
>>>>               "/home/openflow/pox/pox/lib/recoco/recoco.py", line<br>
>>>>               94, in<br>
>>>>>>> execute<br>
>>>>>>>   return self.gen.send(v)<br>
>>>>>>> File<br>
>>>>               "/home/openflow/pox/pox/lib/recoco/recoco.py", line<br>
>>>>               751, in<br>
>>>>>>> run<br>
>>>>>>>   rv = self._callback(*self._args,**self._kw)<br>
>>>>>>> File "/home/openflow/pox/ext/test1stat.py",<br>
>>>>               line 270, in<br>
>>>>>>> countrequest<br>
>>>>>>>   connection.send(re1)<br>
>>>>>>> File<br>
>>>>               "/home/openflow/pox/pox/openflow/of_01.py", line 573,<br>
>>>>               in<br>
>>>>>>> send<br>
>>>>>>>   data = data.pack()<br>
>>>>>>> File<br>
>>>>               "/home/openflow/pox/pox/openflow/libopenflow_01.py",<br>
>>>>               line<br>
>>>>>>> 2136, in pack<br>
>>>>>>>   packed += struct.pack("!HH", self.type,<br>
>>>>               self.flags)<br>
>>>>>>> error: cannot convert argument to integer<br>
>>>>>>><br>
>>>>>>><br>
>>>>>>> Is there anything that I don't do correctly?<br>
>>>>>>><br>
>>>>>>> And my another question is that even assuming I<br>
>>>>               can add<br>
>>>>>>> portstatlistener and flowstatlistener as :<br>
>>>>>>><br>
>>>>>>><br>
>>>>                core.openflow.addListenerByName("PortStatsReceived",<br>
>>>>>>> statsreceived)<br>
>>>>>>><br>
>>>>                core.openflow.addListenerByName("FlowStatsReceived",<br>
>>>>>>> statsreceived)<br>
>>>>>>><br>
>>>>>>> Can I distinguish through statsreceived which<br>
>>>>               event is which? Or<br>
>>>>>>> can I combine these two listeners together?<br>
>>>>>>><br>
>>>>>>> Thanks very much.<br>
>>>>>>><br>
>>>>>>> Weiyang<br>
>>>>>>><br>
>>>>>>><br>
>>>>>>><br>
>>>>>>><br>
>>>>>>><br>
>>>>>>><br>
>>>>>>><br>
>>>>>>><br>
>>>>>>><br>
>>>>>>><br>
>>>>>>><br>
>>>>>>><br>
>>>>>>> 2012/9/19 William Emmanuel Yu <<a href="mailto:wyu@ateneo.edu">wyu@ateneo.edu</a>><br>
>>>>>>>       Hi,<br>
>>>>>>><br>
>>>>>>>       Attached is a flow_stats.py file that<br>
>>>>               contains a sample<br>
>>>>>>>       for getting<br>
>>>>>>>       stats from all switches connected to the<br>
>>>>               controller<br>
>>>>>>>       (flow_stats.py).<br>
>>>>>>>       Attached is also a file of_json.py (from<br>
>>>>               Murphy) which is<br>
>>>>>>>       a helper<br>
>>>>>>>       library to convert the output into JSON<br>
>>>>               format (which is<br>
>>>>>>>       much more<br>
>>>>>>>       readable than the current classes).<br>
>>>>>>><br>
>>>>>>>       Good luck!<br>
>>>>>>><br>
>>>>>>>       On Wed, 2012-09-19 at 10:41 -0700,<br>
>>>>               Weiyang Mo wrote:<br>
>>>>>>>> Hi, Seungwon,<br>
>>>>>>>><br>
>>>>>>>> Thanks very much.<br>
>>>>>>>><br>
>>>>>>>> Now it works and I can make some<br>
>>>>               logical programming to<br>
>>>>>>>       do my routing<br>
>>>>>>>> algorithm.<br>
>>>>>>>><br>
>>>>>>>> Best<br>
>>>>>>>><br>
>>>>>>>> Weiyang<br>
>>>>>>>><br>
>>>>>>>><br>
>>>>>>>> 2012/9/19 Seungwon Shin<br>
>>>>               <<a href="mailto:seungwon.shin@gmail.com">seungwon.shin@gmail.com</a>><br>
>>>>>>>>       Hi, Weiyang<br>
>>>>>>>><br>
>>>>>>>><br>
>>>>>>>>       In the case of collecting the<br>
>>>>               statistical<br>
>>>>>>>       information for a<br>
>>>>>>>>       flow table<br>
>>>>>>>>       You can register your listener<br>
>>>>               like<br>
>>>>>>>>       --><br>
>>>>>>><br>
>>>>               core.openflow.addListenerByName("TableStatsReceived",<br>
>>>>>>>>       <your handler>)<br>
>>>>>>>><br>
>>>>>>>><br>
>>>>>>>>       and your handler can parse..<br>
>>>>>>>><br>
>>>>>>>><br>
>>>>>>>>       def <your handler>(event):<br>
>>>>>>>>          for item in event.stats<br>
>>>>>>>>              print item.wildcards<br>
>>>>>>>><br>
>>>>>>>><br>
>>>>>>>><br>
>>>>>>>><br>
>>>>>>>>       You can find more information<br>
>>>>               by looking at the<br>
>>>>>>>       following<br>
>>>>>>>>       classes in POX source code<br>
>>>>               (libopenflow_01.py)<br>
>>>>>>>><br>
>>>>>>>><br>
>>>>>>>>       class ofp_flow_stats<br>
>>>>>>>><br>
>>>>>>>><br>
>>>>>>>>       class ofp_table_stats<br>
>>>>>>>><br>
>>>>>>>><br>
>>>>>>>>       ….<br>
>>>>>>>><br>
>>>>>>>><br>
>>>>>>>>       Each class has its __init__<br>
>>>>               function, and you<br>
>>>>>>>       will find all<br>
>>>>>>>>       variables for stats in the<br>
>>>>               function.<br>
>>>>>>>>       The variables that you are<br>
>>>>               looking for should be<br>
>>>>>>>       one of them.<br>
>>>>>>>>       (E.g., wildcards is an initial<br>
>>>>               variable of<br>
>>>>>>>       ofp_table_stats<br>
>>>>>>>>       class).<br>
>>>>>>>><br>
>>>>>>>><br>
>>>>>>>>       Best,<br>
>>>>>>>>       Seungwon<br>
>>>>>>>><br>
>>>>>>>><br>
>>>>>>>><br>
>>>>>>>>       On Sep 19, 2012, at 11:49 AM,<br>
>>>>               Weiyang Mo<br>
>>>>>>>>       <<a href="mailto:moweiyang1988@gmail.com">moweiyang1988@gmail.com</a>><br>
>>>>               wrote:<br>
>>>>>>>><br>
>>>>>>>>> Hi,William,<br>
>>>>>>>>><br>
>>>>>>>>> Thanks for your advice and<br>
>>>>               that's what I<br>
>>>>>>>       already did. What I<br>
>>>>>>>>> meant is that although I<br>
>>>>               sent such request, I<br>
>>>>>>>       don't have<br>
>>>>>>>>> ideas how to get the reply<br>
>>>>               back. I do<br>
>>>>>>>       modifications as<br>
>>>>>>>>> follows in<br>
>>>>               forwarding.l2_learning, which sends<br>
>>>>>>>       request right<br>
>>>>>>>>> after sending flow entry<br>
>>>>               request.<br>
>>>>>>>>><br>
>>>>>>>>>          msg =<br>
>>>>               of.ofp_flow_mod()<br>
>>>>>>>>>           msg.match =<br>
>>>>>>>       of.ofp_match.from_packet(packet)<br>
>>>>>>>>><br>
>>>>               msg.match.in_port =<br>
>>>>>>>       packet_in.in_port<br>
>>>>>>>>>           msg.idle_timeout<br>
>>>>               = 30<br>
>>>>>>>>>           msg.hard_timeout<br>
>>>>               = 30<br>
>>>>>>>>><br>
>>>>>>><br>
>>>>               msg.actions.append(of.ofp_action_output(port =<br>
>>>>>>>>> out_port))<br>
>>>>>>>>><br>
>>>>               self.connection.send(msg)<br>
>>>>>>>>><br>
>>>>>>>>><br>
>>>>>>><br>
>>>>               "-----------------------------------------------------"<br>
>>>>>>>>>          req =<br>
>>>>               of.ofp_flow_stats_request()<br>
>>>>>>>>>          re =<br>
>>>>               of.ofp_stats_request(body =<br>
>>>>>>>       req)<br>
>>>>>>>>><br>
>>>>                self.connection.send(re)<br>
>>>>>>>>><br>
>>>>>>>>> When I try pinging between<br>
>>>>               hosts, it works<br>
>>>>>>>       correctly and the<br>
>>>>>>>>> statistics request has been<br>
>>>>               sent. The question<br>
>>>>>>>       is  that the<br>
>>>>>>>>> switches sent "stats  reply<br>
>>>>               back" to<br>
>>>>>>>       controller ( I detect<br>
>>>>>>>>> them through wireshark)<br>
>>>>               however from<br>
>>>>>>>       controller side, I<br>
>>>>>>>>> don't now how to catch the<br>
>>>>               reply packet and<br>
>>>>>>>       parse it as I<br>
>>>>>>>>> want.<br>
>>>>>>>>><br>
>>>>>>>>> Any advice?<br>
>>>>>>>>><br>
>>>>>>>>> Thanks very much.<br>
>>>>>>>>><br>
>>>>>>>>> Weiyang<br>
>>>>>>>>><br>
>>>>>>>>><br>
>>>>>>>>> 2012/9/19 William Emmanuel<br>
>>>>               Yu <<a href="mailto:wyu@ateneo.edu">wyu@ateneo.edu</a>><br>
>>>>>>>>>       Hi Weiyang,<br>
>>>>>>>>><br>
>>>>>>>>>       Did you check out<br>
>>>>>>>       ofp_flow_stats_request()?<br>
>>>>>>>>><br>
>>>>>>>>>       import<br>
>>>>               pox.openflow.libopenflow_01 as<br>
>>>>>>>       of<br>
>>>>>>>>>       fsr =<br>
>>>>               of.ofp_flow_stats_request()<br>
>>>>>>>>>       sr =<br>
>>>>               of.ofp_stats_request(body = fsr)<br>
>>>>>>>>>       switch.send(sr)<br>
>>>>>>>>><br>
>>>>>>>>>       Check out:<br>
>>>>>>>>><br>
>>>>>>><br>
>>>>               <a href="https://groups.google.com/forum/?fromgroups=#" target="_blank">https://groups.google.com/forum/?fromgroups=#</a>!<br>
>>>>>>>>><br>
>>>>               topic/pox_dev/sSlfqm5Okls<br>
>>>>>>>>><br>
>>>>>>>>>       Good luck!<br>
>>>>>>>>><br>
>>>>>>>>>       On Tue, 2012-09-18<br>
>>>>               at 08:21 -0700,<br>
>>>>>>>       Weiyang Mo wrote:<br>
>>>>>>>>>> Hi,All,<br>
>>>>>>>>>><br>
>>>>>>>>>> I try to use<br>
>>>>               packet counts from<br>
>>>>>>>       switches within a<br>
>>>>>>>>>       time period (e.g<br>
>>>>>>>>>> 10secs) to do some<br>
>>>>               routing.  In the<br>
>>>>>>>       documentation<br>
>>>>>>>>>><br>
>>>>>>><br>
>>>>               <a href="https://openflow.stanford.edu/display/ONL/POX" target="_blank">https://openflow.stanford.edu/display/ONL/POX</a><br>
>>>>>>>>><br>
>>>>>>>>>><br>
>>>>               +Wiki#POXWiki-StatisticEvent it<br>
>>>>>>>       mentions that it's<br>
>>>>>>>>>       possible to do this<br>
>>>>>>>>>> using a timer. I<br>
>>>>               guess using 'time<br>
>>>>>>>       to wake' to<br>
>>>>>>>>>       call a counting<br>
>>>>>>>>>> function may help.<br>
>>>>>>>>>><br>
>>>>>>>>>> However I'm not<br>
>>>>               famiiar with getting<br>
>>>>>>>       statistics<br>
>>>>>>>>>       from a switch. More<br>
>>>>>>>>>> than one flow, I<br>
>>>>               want to get total<br>
>>>>>>>       packet counts<br>
>>>>>>>>>       within 10 seconds<br>
>>>>>>>>>> from all flow<br>
>>>>               entries. Could you<br>
>>>>>>>       please help to<br>
>>>>>>>>>       give me a simple<br>
>>>>>>>>>> examples about<br>
>>>>               this?<br>
>>>>>>>>>><br>
>>>>>>>>>> Thanks very much.<br>
>>>>>>>>>><br>
>>>>>>>>>> Best<br>
>>>>>>>>>><br>
>>>>>>>>>> Weiyang<br>
>>>>>>>>>><br>
>>>>>>>>>><br>
>>>>>>>>><br>
>>>>>>>>><br>
>>>>>>>>>       --<br>
>>>>>>>>><br>
>>>>>>><br>
>>>>               -------------------------------------------------------<br>
>>>>>>>>>       William Emmanuel S.<br>
>>>>               Yu, Ph.D. (杨怀义)<br>
>>>>>>>>>       Department of<br>
>>>>               Information Systems and<br>
>>>>>>>       Computer<br>
>>>>>>>>>       Science<br>
>>>>>>>>>       Ateneo de Manila<br>
>>>>               University<br>
>>>>>>>>>       email  :  wyu at<br>
>>>>               ateneo dot edu<br>
>>>>>>>>>       blog   :<br>
>>>>                <a href="http://hip2b2.yutivo.org/" target="_blank">http://hip2b2.yutivo.org/</a><br>
>>>>>>>>>       web    :<br>
>>>>>>>        <a href="http://CNG.ateneo.edu/cng/wyu/" target="_blank">http://CNG.ateneo.edu/cng/wyu/</a><br>
>>>>>>>>>       phone  :<br>
>>>>                <a href="tel:%2B63%282%294266001" value="+6324266001">+63(2)4266001</a> loc. 4186<br>
>>>>>>>>>       GPG    :<br>
>>>>>>>        <a href="http://CNG.ateneo.net/cng/wyu/wyy.pgp" target="_blank">http://CNG.ateneo.net/cng/wyu/wyy.pgp</a><br>
>>>>>>>>><br>
>>>>>>>>>       Confidentiality<br>
>>>>               Issue:  This message<br>
>>>>>>>       is intended<br>
>>>>>>>>>       only for the use of<br>
>>>>               the<br>
>>>>>>>>>       addressee and may<br>
>>>>               contain information<br>
>>>>>>>       that is<br>
>>>>>>>>>       privileged and<br>
>>>>>>>>>       confidential. If you<br>
>>>>               are not the<br>
>>>>>>>       intended recipient,<br>
>>>>>>>>>       you are hereby<br>
>>>>>>>>>       notified that any<br>
>>>>               use or dissemination<br>
>>>>>>>       of this<br>
>>>>>>>>>       communication is<br>
>>>>               strictly<br>
>>>>>>>>>       prohibited.  If you<br>
>>>>               have received this<br>
>>>>>>>       communication<br>
>>>>>>>>>       in error, please<br>
>>>>>>>>>       notify us<br>
>>>>               immediately by reply and<br>
>>>>>>>       delete this<br>
>>>>>>>>>       message from your<br>
>>>>               system.<br>
>>>>>>>>><br>
>>>>>>>>><br>
>>>>>>>><br>
>>>>>>>><br>
>>>>>>>><br>
>>>>>>><br>
>>>>>>>       --<br>
>>>>>>><br>
>>>>               -------------------------------------------------------<br>
>>>>>>>       William Emmanuel S. Yu, Ph.D. (杨怀义)<br>
>>>>>>>       Department of Information Systems and<br>
>>>>               Computer Science<br>
>>>>>>>       Ateneo de Manila University<br>
>>>>>>>       email  :  wyu at ateneo dot edu<br>
>>>>>>>       blog   :  <a href="http://hip2b2.yutivo.org/" target="_blank">http://hip2b2.yutivo.org/</a><br>
>>>>>>>       web    :  <a href="http://CNG.ateneo.edu/cng/wyu/" target="_blank">http://CNG.ateneo.edu/cng/wyu/</a><br>
>>>>>>>       phone  :  <a href="tel:%2B63%282%294266001" value="+6324266001">+63(2)4266001</a> loc. 4186<br>
>>>>>>>       GPG    :<br>
>>>>                <a href="http://CNG.ateneo.net/cng/wyu/wyy.pgp" target="_blank">http://CNG.ateneo.net/cng/wyu/wyy.pgp</a><br>
>>>>>>><br>
>>>>>>>       Confidentiality Issue:  This message is<br>
>>>>               intended only for<br>
>>>>>>>       the use of the<br>
>>>>>>>       addressee and may contain information<br>
>>>>               that is privileged<br>
>>>>>>>       and<br>
>>>>>>>       confidential. If you are not the<br>
>>>>               intended recipient, you<br>
>>>>>>>       are hereby<br>
>>>>>>>       notified that any use or dissemination<br>
>>>>               of this<br>
>>>>>>>       communication is strictly<br>
>>>>>>>       prohibited.  If you have received this<br>
>>>>               communication in<br>
>>>>>>>       error, please<br>
>>>>>>>       notify us immediately by reply and<br>
>>>>               delete this message<br>
>>>>>>>       from your system.<br>
>>>>>>><br>
>>>>>>><br>
>>>>>><br>
>>>>>><br>
>>>><br>
>>>>               --<br>
>>>>               -------------------------------------------------------<br>
>>>>               William Emmanuel S. Yu, Ph.D. (杨怀义)<br>
>>>>               Department of Information Systems and Computer Science<br>
>>>>               Ateneo de Manila University<br>
>>>>               email  :  wyu at ateneo dot edu<br>
>>>>               blog   :  <a href="http://hip2b2.yutivo.org/" target="_blank">http://hip2b2.yutivo.org/</a><br>
>>>>               web    :  <a href="http://CNG.ateneo.edu/cng/wyu/" target="_blank">http://CNG.ateneo.edu/cng/wyu/</a><br>
>>>>               phone  :  <a href="tel:%2B63%282%294266001" value="+6324266001">+63(2)4266001</a> loc. 4186<br>
>>>>               GPG    :  <a href="http://CNG.ateneo.net/cng/wyu/wyy.pgp" target="_blank">http://CNG.ateneo.net/cng/wyu/wyy.pgp</a><br>
>>>><br>
>>>>               Confidentiality Issue:  This message is intended only<br>
>>>>               for the use of the<br>
>>>>               addressee and may contain information that is<br>
>>>>               privileged and<br>
>>>>               confidential. If you are not the intended recipient,<br>
>>>>               you are hereby<br>
>>>>               notified that any use or dissemination of this<br>
>>>>               communication is strictly<br>
>>>>               prohibited.  If you have received this communication<br>
>>>>               in error, please<br>
>>>>               notify us immediately by reply and delete this message<br>
>>>>               from your system.<br>
>>>><br>
>>>><br>
>>>><br>
>>><br>
>>> --<br>
>>> -------------------------------------------------------<br>
>>> William Emmanuel S. Yu, Ph.D. (杨怀义)<br>
>>> Department of Information Systems and Computer Science<br>
>>> Ateneo de Manila University<br>
>>> email  :  wyu at ateneo dot edu<br>
>>> blog   :  <a href="http://hip2b2.yutivo.org/" target="_blank">http://hip2b2.yutivo.org/</a><br>
>>> web    :  <a href="http://CNG.ateneo.edu/cng/wyu/" target="_blank">http://CNG.ateneo.edu/cng/wyu/</a><br>
>>> phone  :  <a href="tel:%2B63%282%294266001" value="+6324266001">+63(2)4266001</a> loc. 4186<br>
>>> GPG    :  <a href="http://CNG.ateneo.net/cng/wyu/wyy.pgp" target="_blank">http://CNG.ateneo.net/cng/wyu/wyy.pgp</a><br>
>>><br>
>>> Confidentiality Issue:  This message is intended only for the use of the<br>
>>> addressee and may contain information that is privileged and<br>
>>> confidential. If you are not the intended recipient, you are hereby<br>
>>> notified that any use or dissemination of this communication is strictly<br>
>>> prohibited.  If you have received this communication in error, please<br>
>>> notify us immediately by reply and delete this message from your system.<br>
>>><br>
>><br>
><br>
> --<br>
> -------------------------------------------------------<br>
> William Emmanuel S. Yu, Ph.D. (杨怀义)<br>
> Department of Information Systems and Computer Science<br>
> Ateneo de Manila University<br>
> email  :  wyu at ateneo dot edu<br>
> blog   :  <a href="http://hip2b2.yutivo.org/" target="_blank">http://hip2b2.yutivo.org/</a><br>
> web    :  <a href="http://CNG.ateneo.edu/cng/wyu/" target="_blank">http://CNG.ateneo.edu/cng/wyu/</a><br>
> phone  :  <a href="tel:%2B63%282%294266001" value="+6324266001">+63(2)4266001</a> loc. 4186<br>
> GPG    :  <a href="http://CNG.ateneo.net/cng/wyu/wyy.pgp" target="_blank">http://CNG.ateneo.net/cng/wyu/wyy.pgp</a><br>
><br>
> Confidentiality Issue:  This message is intended only for the use of the<br>
> addressee and may contain information that is privileged and<br>
> confidential. If you are not the intended recipient, you are hereby<br>
> notified that any use or dissemination of this communication is strictly<br>
> prohibited.  If you have received this communication in error, please<br>
> notify us immediately by reply and delete this message from your system.<br>
><br>
<br>
</div></div></blockquote></div><br>