From nakano.hiroaki @ nttcom.co.jp Tue Mar 19 11:07:57 2013 From: nakano.hiroaki @ nttcom.co.jp (=?ISO-2022-JP?B?GyRCQ2ZMbiEhOShPLxsoQg==?=) Date: Tue, 19 Mar 2013 11:07:57 +0900 Subject: [Ultramonkey-l7-develop 900] Re: =?iso-2022-jp?b?ZGViaWFuIHRlc3RpbmcbJEIkRyROJTMlcyVRJSQbKEI=?= =?iso-2022-jp?b?GyRCJWslKCVpITwbKEI=?= In-Reply-To: <5146D8DE.80409@lab.ntt.co.jp> References: <511126D8.60807@iwao.net> <5146D35D.5020704@nttcom.co.jp> <5146D8DE.80409@lab.ntt.co.jp> Message-ID: <5147C87D.4080802@nttcom.co.jp> 中野@幕張です。 (2013/03/18 18:05), Hibari Michiro wrote: > 中野様 > > 雲雀です。お世話になっております。 > > チケットの発行お願いします。 了解です。 > diff(patch)ですが、添付ファイルとしても乗っけて > 頂けると、手元の環境に取り込んだりするのが楽なので、 > 助かります。 > (メーラによってはスペースを勝手に省略してしまったりして、 > コピペだけだとそのままpatchとして使えなかったりするので。) 自分は添付ファイル、というかmultipartメール自体が嫌いです^^; multipartってMUAによって扱えたり扱えなかったりするので、個人宛メールなら いいんですが、MLみたいな不特定多数への同報メールに使うのは推奨できないって 思ってたり。 ・・・って、これはUnix/Linuxで育った人とWindowsで育った人との差かなぁ。 netnewsとかだと、multipartなんて使ったらボコボコに怒られたしw 今ではボコボコに言われることはほとんど無いけどw、英語系のOSS開発MLだと 添付ファイルメールはいい顔されないんで気をつけたほうがいいですよ。 あとWebでのMLログとかでも、添付はうまく扱えないところとかあるし。 > Fedora18がRHEL7のベースになると言われているので、 > ターゲットとしてはFedora18に同梱されているgcc4.7で > コンパイルが通ることがゴールにすると良いかと。 自宅のLinuxは全部Debian系・・・というか、debian testingしかないですw 4.7入るのかな?誰かやってw > (2013/03/18 17:42), 中野 宏朗 wrote: >> 中野@幕張です。 >> >> そういえばこれはまだチケット発行してなかったですね。 >> v3.1.0には間に合わないかな? >> >> wheezyのgccは4.6になります。あ、でもバージョンアップ >> してるから4.7とかになってたりして。 >> >> fedoraだとfedora 16が4.6、17だと4.7系ですね。 >> v3.1.xの早いうちに対応したほうが良さそうです。 >> チケット発行しておきます。 >> >> 修正方針メモを投稿しておきます。 >> こんな感じでOK? >> >> ===================== >> diff --git a/l7vsd/module/protocol/protocol_module_ip.cpp b/l7vsd/module/protocol/protocol_module_ip.cpp >> index 2d3ec46..8c028d6 100644 >> --- a/l7vsd/module/protocol/protocol_module_ip.cpp >> +++ b/l7vsd/module/protocol/protocol_module_ip.cpp >> @@ -324,7 +324,7 @@ protocol_module_base::check_message_result protocol_module_ip::check_parameter(c >> bool timeout_flag = false; >> bool reschedule_flag = false; >> bool no_reschedule_flag = false; >> - bool forward_checked = false; >> + //bool forward_checked = false; >> bool sorryuri_checked = false; >> bool stats_checked = false; >> >> @@ -450,7 +450,7 @@ protocol_module_base::check_message_result protocol_module_ip::check_parameter(c >> //option string = "-F" >> else if (*it == "-F" || *it == "--forwarded-for") { >> //set forward flag ON >> - forward_checked = true; >> + //forward_checked = true; >> } >> //option string = "-S" >> else if (*it == "-S" || *it == "--sorry-uri") { >> check_parameterでのforwadedフラグチェックは意味無いからなくしていい。 >> >> @@ -5657,11 +5657,6 @@ bool protocol_module_ip::put_data_into_sendbuffer( >> buffer_element.first += sendbuffer_rest_size; >> buffer_element.second -= sendbuffer_rest_size; >> sendbuffer_rest_size = 0; >> - >> - //add remain item >> - data_ptr->buffer_sequence.push_back(buffer_element); >> - //delete the item >> - data_ptr->buffer_sequence.pop_front(); >> break; >> } >> } >> これは不明 >> >> diff --git a/l7vsd/module/protocol/protocol_module_ip.h b/l7vsd/module/protocol/protocol_module_ip.h >> index 50d064b..54af5f7 100644 >> --- a/l7vsd/module/protocol/protocol_module_ip.h >> +++ b/l7vsd/module/protocol/protocol_module_ip.h >> @@ -93,8 +93,8 @@ protected: >> hash = cl_endpoint.address().to_v4().to_ulong() * GOLDEN_RATIO_PRIME; >> } else { >> boost::asio::ip::address_v6::bytes_type v6_bytes = cl_endpoint.address().to_v6().to_bytes(); >> - boost::asio::ip::address_v4::bytes_type v4_bytes = {{v6_bytes[12], v6_bytes[13], v6_bytes[14], >> v6_bytes[15]}}; >> - boost::asio::ip::address_v4::address_v4 v4_address = >> boost::asio::ip::address_v4::address_v4(v4_bytes); >> + const boost::asio::ip::address_v4::bytes_type v4_bytes = {{v6_bytes[12], v6_bytes[13], >> v6_bytes[14], v6_bytes[15]}}; >> + boost::asio::ip::address_v4 v4_address(v4_bytes); >> hash = v4_address.to_ulong() * GOLDEN_RATIO_PRIME; >> 将来的には治したほうがいい。 >> >> } >> diff --git a/l7vsd/module/protocol/protocol_module_sessionless.cpp b/l7vsd/module/protocol/protocol_module_sessionless.cpp >> index d042afb..f655cec 100644 >> --- a/l7vsd/module/protocol/protocol_module_sessionless.cpp >> +++ b/l7vsd/module/protocol/protocol_module_sessionless.cpp >> @@ -356,7 +356,7 @@ protocol_module_base::check_message_result protocol_module_sessionless::check_pa >> //set check result true >> check_message_result check_result; >> check_result.flag = true; >> - bool forward_checked = false; >> + //bool forward_checked = false; >> bool sorryuri_checked = false; >> bool stats_checked = false; >> >> @@ -408,7 +408,7 @@ protocol_module_base::check_message_result protocol_module_sessionless::check_pa >> //option string = "-F" >> if (*it == "-F" || *it == "--forwarded-for") { >> //set forward flag ON >> - forward_checked = true; >> + //forward_checked = true; >> } >> //option string = "-S" >> else if (*it == "-S" || *it == "--sorry-uri") { >> いらん。 >> >> diff --git a/l7vsd/src/l7vsadm.cpp b/l7vsd/src/l7vsadm.cpp >> index b63d573..951db90 100644 >> --- a/l7vsd/src/l7vsadm.cpp >> +++ b/l7vsd/src/l7vsadm.cpp >> @@ -2957,9 +2957,10 @@ bool l7vs::l7vsadm::execute(int argc, char *argv[]) >> >> // Get l7vsadm execute file path from /proc/(pid)/exe (symbolic link) >> char l7vsadm_file_path[256]; >> - ssize_t retsize; >> + //ssize_t retsize; >> memset(l7vsadm_file_path, 0, sizeof(l7vsadm_file_path)); >> - retsize = readlink("/proc/self/exe", l7vsadm_file_path, sizeof(l7vsadm_file_path)); >> + //retsize = readlink("/proc/self/exe", l7vsadm_file_path, sizeof(l7vsadm_file_path)); >> + readlink("/proc/self/exe", l7vsadm_file_path, sizeof(l7vsadm_file_path)); >> >> // L7vsadm command conflict check. (Try l7vsadm execute file lock) >> file_lock lock(l7vsadm_file_path, l7vsadm_err); >> この直後、ファイルパスでロックをかけようとして、ロックかけられなかったら >> エラー終了してるからここではエラーチェックしなくていいかも。 >> してもいいけど。 >> >> diff --git a/l7vsd/src/logger_impl.cpp b/l7vsd/src/logger_impl.cpp >> index 0ab72b1..9401d8f 100644 >> --- a/l7vsd/src/logger_impl.cpp >> +++ b/l7vsd/src/logger_impl.cpp >> @@ -343,9 +343,9 @@ bool l7vs::LoggerImpl::init() >> } >> >> // get hostname >> - int ret = 0; >> + //int ret = 0; >> char buff[HOST_NAME_MAX]; >> - ret = gethostname(buff, HOST_NAME_MAX); >> + gethostname(buff, HOST_NAME_MAX); >> hostname = buff; >> >> initialized = true; >> ここは一応hostnameが取れたかどうか判定してもいいんで無いか? >> 取れていなかった場合どうする?エラー終了? >> それともログ用ホスト名なし程度、無視する? >> >> diff --git a/l7vsd/src/session_thread_control.cpp b/l7vsd/src/session_thread_control.cpp >> index df0c938..2bd5e24 100644 >> --- a/l7vsd/src/session_thread_control.cpp >> +++ b/l7vsd/src/session_thread_control.cpp >> @@ -36,15 +36,17 @@ namespace l7vs >> void session_thread_control::start_thread() >> { >> >> - int int_val; >> + //int int_val; >> >> upthread.reset(new boost::thread(&session_thread_control::upstream_run, this)); //! upstream thread create >> downthread.reset(new boost::thread(&session_thread_control::downstream_run, this)); //! downstream thread create >> >> //pthread_setschedparam >> - int retval, sched_policy; >> + //int retval, sched_policy; >> + int sched_policy; >> sched_param scheduler_param; >> - int_val = pthread_getschedparam(upthread->native_handle(), &sched_policy, &scheduler_param); >> + //int_val = pthread_getschedparam(upthread->native_handle(), &sched_policy, &scheduler_param); >> + pthread_getschedparam(upthread->native_handle(), &sched_policy, &scheduler_param); >> if (SCHED_FIFO == sched_algorithm) { >> scheduler_param.__sched_priority = sched_priority; >> sched_policy = SCHED_FIFO; >> @@ -55,8 +57,10 @@ void session_thread_control::start_thread() >> sched_policy = SCHED_BATCH; >> } >> if (0 <= sched_algorithm) { >> - retval = pthread_setschedparam(upthread->native_handle(), sched_algorithm, &scheduler_param); >> - retval = pthread_setschedparam(downthread->native_handle(), sched_algorithm, &scheduler_param); >> + //retval = pthread_setschedparam(upthread->native_handle(), sched_algorithm, &scheduler_param); >> + //retval = pthread_setschedparam(downthread->native_handle(), sched_algorithm, &scheduler_param); >> + pthread_setschedparam(upthread->native_handle(), sched_algorithm, &scheduler_param); >> + pthread_setschedparam(downthread->native_handle(), sched_algorithm, &scheduler_param); >> } >> >> } >> pthread_getschedparamで返されるエラーはESRCHとEFAULTの二つ。EFAULTはSEGV。ESRCHはスレッドが無効または終了している。 >> これはエラー処理書いてもいいかもしれない。 >> setはEINVAL, EPERM, ESRCH, EFAULT。EINVALはパラメータ指定違い。EPERMはスーパーユーザ権限チェック。 >> これもESRCHはログだしてもいいかな。 >> >> diff --git a/l7vsd/src/virtualservice_base.cpp b/l7vsd/src/virtualservice_base.cpp >> index 94ab8a2..994c634 100644 >> --- a/l7vsd/src/virtualservice_base.cpp >> +++ b/l7vsd/src/virtualservice_base.cpp >> @@ -481,7 +481,7 @@ cpu_set_t l7vs::virtualservice_base::get_cpu_mask(std::string nic_name) >> map< size_t, string > cpu_nic_map; >> string buff; >> ifstream ifs("/proc/interrupts"); >> - unsigned int target_interrupt; >> + //unsigned int target_interrupt; >> size_t target_cpuid = 0; >> cpu_set_t mask; >> sched_getaffinity(0, sizeof(cpu_set_t), &mask); >> @@ -503,7 +503,8 @@ cpu_set_t l7vs::virtualservice_base::get_cpu_mask(std::string nic_name) >> algorithm::split(split_vec, buff, algorithm::is_any_of(":")); >> if (!split_vec.size()) return mask; // cannot split interrupt >> algorithm::trim(split_vec[0]); >> - target_interrupt = lexical_cast(split_vec[0]); >> + //target_interrupt = lexical_cast(split_vec[0]); >> + lexical_cast(split_vec[0]); >> for (size_t i = 0; i < cpu_nic_map.size(); ++i) { >> size_t start_position = 4 + (i * 11); >> size_t end_position = 11; >> これはsched afinity用の使われていないメソッド。 >> 呼び元のvirtualservice_tcpでifdefしてる。 >> そもそも、このメソッド自体が未完成。いまは手動でネットワークのキューにピンさしたら >> スケジューラ任せでよしなにしてくれる。 >> >> ===================== >> >> (2013/02/06 0:35), Hiroaki Nakano wrote: >>> たるすぴ@幕張です。 >>> >>> ultramonkey-l7-v3のmasterブランチをdebian testingで >>> コンパイルしてみたら、いくつかエラーが出ました。 >>> >>> どうやら、新しいg++では値を代入しても参照されない >>> 変数はエラーになるようです。 >>> あと、protocol_module_ip.hにへんなクラス宣言?がありました。 >>> >>> ----------- >>> protocol_module_ip.cpp: In member function 'virtual >>> l7vs::protocol_module_base::check_message_result >>> l7vs::protocol_module_ip::check_parameter(const >>> std::vector >&)': >>> protocol_module_ip.cpp:327:14: error: variable 'forward_checked' set but >>> not used [-Werror=unused-but-set-variable] >>> cc1plus: all warnings being treated as errors >>> make[4]: *** [protocol_module_ip.lo] エラー 1 >>> >>> libtool: compile: g++ -DHAVE_CONFIG_H -I. -I../../.. -g -O2 >>> -fno-strict-aliasing -Wall -Werror -fPIC -pthread -I../../include >>> -I../../logger -I../../parameter -DMAX_BUFFER_SIZE=4096 -g -O2 -MT >>> protocol_module_ip.lo -MD -MP -MF .deps/protocol_module_ip.Tpo -c >>> protocol_module_ip.cpp -fPIC -DPIC -o .libs/protocol_module_ip.o >>> protocol_module_sessionless.cpp: In member function 'virtual >>> l7vs::protocol_module_base::check_message_result >>> l7vs::protocol_module_sessionless::check_parameter(const >>> std::vector >&)': >>> protocol_module_sessionless.cpp:359:14: error: variable >>> 'forward_checked' set but not used [-Werror=unused-but-set-variable] >>> In file included from protocol_module_ip.cpp:33:0: >>> protocol_module_ip.h: In member function 'unsigned int >>> l7vs::protocol_module_ip::l7vs_ip_service_calc_hash(const endpoint&)': >>> protocol_module_ip.h:97:25: error: >>> 'boost::asio::ip::address_v4::address_v4' names the constructor, not the >>> type >>> protocol_module_ip.h:97:65: error: expected ';' before 'v4_address' >>> protocol_module_ip.h:97:127: error: statement cannot resolve address of >>> overloaded function >>> protocol_module_ip.h:98:32: error: 'v4_address' was not declared in this >>> scope >>> In file included from protocol_module_ip.cpp:33:0: >>> protocol_module_ip.h:96:65: error: unused variable 'v4_bytes' >>> [-Werror=unused-variable] >>> cc1plus: all warnings being treated as errors >>> make[4]: *** [protocol_module_sessionless.lo] エラー 1 >>> make[4]: *** 未完了のジョブを待っています.... >>> cc1plus: all warnings being treated as errors >>> make[4]: *** [protocol_module_ip.lo] エラー 1 >>> >>> >>> l7vsadm.cpp: In member function ‘bool l7vs::l7vsadm::execute(int, char**)’: >>> l7vsadm.cpp:2960:17: error: variable ‘retsize’ set but not used >>> [-Werror=unused-but-set-variable] >>> cc1plus: all warnings being treated as errors >>> make[3]: *** [l7vsadm-l7vsadm.o] エラー 1 >>> >>> g++ -DHAVE_CONFIG_H -I. -I../.. -O2 -fno-strict-aliasing -g -Wall >>> -Werror -pthread -I../include -I../include >>> -DL7VS_MODULE_PATH="\"/usr/lib64/l7vs\"" -DMAX_BUFFER_SIZE=4096 >>> -DPARAMETER_FILE="\"/etc/l7vs/l7vs.cf\"" >>> -DL7VS_CONFIG_SOCK_PATH="\"/var/run/l7vs\"" -DLOGGER_PROCESS_VSD >>> -DNETSNMP_NO_INLINE -DVERSION=\"3.0.4\" -g -O2 -MT >>> l7vsd-protocol_module_control.o -MD -MP -MF >>> .deps/l7vsd-protocol_module_control.Tpo -c -o >>> l7vsd-protocol_module_control.o `test -f 'protocol_module_control.cpp' >>> || echo './'`protocol_module_control.cpp >>> session_thread_control.cpp: In member function ‘void >>> l7vs::session_thread_control::start_thread()’: >>> session_thread_control.cpp:39:24: error: variable ‘int_val’ set but not >>> used [-Werror=unused-but-set-variable] >>> session_thread_control.cpp:45:16: error: variable ‘retval’ set but not >>> used [-Werror=unused-but-set-variable] >>> cc1plus: all warnings being treated as errors >>> make[3]: *** [l7vsd-session_thread_control.o] エラー 1 >>> make[3]: *** 未完了のジョブを待っています.... >>> >>> >>> g++ -DHAVE_CONFIG_H -I. -I../.. -O2 -fno-strict-aliasing -g -Wall >>> -Werror -pthread -I../include -I../include >>> -DL7VS_MODULE_PATH="\"/usr/lib64/l7vs\"" -DMAX_BUFFER_SIZE=4096 >>> -DPARAMETER_FILE="\"/etc/l7vs/l7vs.cf\"" >>> -DL7VS_CONFIG_SOCK_PATH="\"/var/run/l7vs\"" -DLOGGER_PROCESS_VSD >>> -DNETSNMP_NO_INLINE -DVERSION=\"3.0.4\" -g -O2 -MT >>> l7vsd-virtualservice_udp.o -MD -MP -MF >>> .deps/l7vsd-virtualservice_udp.Tpo -c -o l7vsd-virtualservice_udp.o >>> `test -f 'virtualservice_udp.cpp' || echo './'`virtualservice_udp.cpp >>> virtualservice_base.cpp: In member function ‘cpu_set_t >>> l7vs::virtualservice_base::get_cpu_mask(std::string)’: >>> virtualservice_base.cpp:484:33: error: variable ‘target_interrupt’ set >>> but not used [-Werror=unused-but-set-variable] >>> cc1plus: all warnings being treated as errors >>> make[3]: *** [l7vsd-virtualservice_base.o] エラー 1 >>> make[3]: *** 未完了のジョブを待っています.... >>> >>> >>> logger_a-logger_impl.o -MD -MP -MF >>> .deps/libl7vsd_logger_a-logger_impl.Tpo -c -o >>> libl7vsd_logger_a-logger_impl.o `test -f 'logger_impl.cpp' || echo >>> './'`logger_impl.cpp >>> logger_impl.cpp: In member function ‘virtual bool l7vs::LoggerImpl::init()’: >>> logger_impl.cpp:346:20: error: variable ‘ret’ set but not used >>> [-Werror=unused-but-set-variable] >>> cc1plus: all warnings being treated as errors >>> make[3]: *** [libl7vsd_logger_a-logger_impl.o] エラー 1 >>> make[3]: *** 未完了のジョブを待っています.... >>> ---------------------------------------------------- >>> >>> 使っていない変数はコメントにしたり消したりして、 >>> 変な宣言のところを直したパッチを作ったので添付しておきます。 >>> # 必要な変数だったのなら、処理が漏れていることになるね。 >>> >>> >>> >>> >>> _______________________________________________ >>> Ultramonkey-l7-develop mailing list >>> Ultramonkey-l7-develop @ lists.sourceforge.jp >>> http://lists.sourceforge.jp/mailman/listinfo/ultramonkey-l7-develop >>> > > -- 中野 宏朗 (NAKANO Hiroaki) NTTコムウェア 品質生産性技術本部 技術SE部 基盤ソフトSE・OSS部門 OSS適用推進担当 Tel: 043-211-2452 (Ext: 特番+26-8341), Fax: 043-211-5086 Zip/Address: 261-0023 千葉県千葉市美浜区中瀬1-6 NTT幕張ビル21F-En From takebayashi.shinya @ lab.ntt.co.jp Tue Mar 19 12:37:37 2013 From: takebayashi.shinya @ lab.ntt.co.jp (Shinya TAKEBAYASHI) Date: Tue, 19 Mar 2013 12:37:37 +0900 Subject: [Ultramonkey-l7-develop 901] Re: =?iso-2022-jp?b?ZGViaWFuIHRlc3RpbmcbJEIkRyROJTMlcyVRJSQbKEI=?= =?iso-2022-jp?b?GyRCJWslKCVpITwbKEI=?= In-Reply-To: <5147C87D.4080802@nttcom.co.jp> References: <511126D8.60807@iwao.net> <5146D35D.5020704@nttcom.co.jp> <5146D8DE.80409@lab.ntt.co.jp> <5147C87D.4080802@nttcom.co.jp> Message-ID: たけばやしです. > 自分は添付ファイル、というかmultipartメール自体が嫌いです^^; > multipartってMUAによって扱えたり扱えなかったりするので、個人宛メールなら > いいんですが、MLみたいな不特定多数への同報メールに使うのは推奨できないって > 思ってたり。 > > ・・・って、これはUnix/Linuxで育った人とWindowsで育った人との差かなぁ。 > netnewsとかだと、multipartなんて使ったらボコボコに怒られたしw ニュースで multipart はボコボコにされましたね. fj あたりは酷かった覚えがあります. マルチ・クロスポストとか色々と独自の「しきたり」がありましたね. > 今ではボコボコに言われることはほとんど無いけどw、英語系のOSS開発MLだと > 添付ファイルメールはいい顔されないんで気をつけたほうがいいですよ。 > あとWebでのMLログとかでも、添付はうまく扱えないところとかあるし。 単純にソースを見せたいだけなら,pastebin や chop とかが良いかもしれません. http://pastebin.com/ http://chopapp.com diff を見せたいなら,sourceforge の個人作業部屋で レポジトリを作って云々とか. 閑話休題 > 自宅のLinuxは全部Debian系・・・というか、debian testingしかないですw > 4.7入るのかな?誰かやってw squeeze ですが,4.4.2,4.5.1,4.7.1 まで入れています. # alternative で切り替えています 4.7 環境では boost をインクルードしている箇所でコンパイルエラーになりますね. 先日 deb パッケージ作るときに引っかかりました. もう少し詳しく調べてみることもできますが,時間の制約があるので すぐにとはいきません. 期間,猶予あるのでしょうか. 中野 宏朗 wrote in message <5147C87D.4080802 @ nttcom.co.jp > *** Subject: [Ultramonkey-l7-develop 900] Re: debian testingでのコンパイルエラー *** Date: 2013/03/19 11:07:57 > 中野@幕張です。 > > (2013/03/18 18:05), Hibari Michiro wrote: > > 中野様 > > > > 雲雀です。お世話になっております。 > > > > チケットの発行お願いします。 > > 了解です。 > > > diff(patch)ですが、添付ファイルとしても乗っけて > > 頂けると、手元の環境に取り込んだりするのが楽なので、 > > 助かります。 > > (メーラによってはスペースを勝手に省略してしまったりして、 > > コピペだけだとそのままpatchとして使えなかったりするので。) > > 自分は添付ファイル、というかmultipartメール自体が嫌いです^^; > multipartってMUAによって扱えたり扱えなかったりするので、個人宛メールなら > いいんですが、MLみたいな不特定多数への同報メールに使うのは推奨できないって > 思ってたり。 > > ・・・って、これはUnix/Linuxで育った人とWindowsで育った人との差かなぁ。 > netnewsとかだと、multipartなんて使ったらボコボコに怒られたしw > > 今ではボコボコに言われることはほとんど無いけどw、英語系のOSS開発MLだと > 添付ファイルメールはいい顔されないんで気をつけたほうがいいですよ。 > あとWebでのMLログとかでも、添付はうまく扱えないところとかあるし。 > > > Fedora18がRHEL7のベースになると言われているので、 > > ターゲットとしてはFedora18に同梱されているgcc4.7で > > コンパイルが通ることがゴールにすると良いかと。 > > 自宅のLinuxは全部Debian系・・・というか、debian testingしかないですw > 4.7入るのかな?誰かやってw > > > (2013/03/18 17:42), 中野 宏朗 wrote: > >> 中野@幕張です。 > >> > >> そういえばこれはまだチケット発行してなかったですね。 > >> v3.1.0には間に合わないかな? > >> > >> wheezyのgccは4.6になります。あ、でもバージョンアップ > >> してるから4.7とかになってたりして。 > >> > >> fedoraだとfedora 16が4.6、17だと4.7系ですね。 > >> v3.1.xの早いうちに対応したほうが良さそうです。 > >> チケット発行しておきます。 > >> > >> 修正方針メモを投稿しておきます。 > >> こんな感じでOK? > >> > >> ===================== > >> diff --git a/l7vsd/module/protocol/protocol_module_ip.cpp b/l7vsd/module/ protocol/protocol_module_ip.cpp > >> index 2d3ec46..8c028d6 100644 > >> --- a/l7vsd/module/protocol/protocol_module_ip.cpp > >> +++ b/l7vsd/module/protocol/protocol_module_ip.cpp > >> @@ -324,7 +324,7 @@ protocol_module_base::check_message_result protocol_ module_ip::check_parameter(c > >> bool timeout_flag = false; > >> bool reschedule_flag = false; > >> bool no_reschedule_flag = false; > >> - bool forward_checked = false; > >> + //bool forward_checked = false; > >> bool sorryuri_checked = false; > >> bool stats_checked = false; > >> > >> @@ -450,7 +450,7 @@ protocol_module_base::check_message_result protocol_ module_ip::check_parameter(c > >> //option string = "-F" > >> else if (*it == "-F" || *it == "--forwarded-for") { > >> //set forward flag ON > >> - forward_checked = true; > >> + //forward_checked = true; > >> } > >> //option string = "-S" > >> else if (*it == "-S" || *it == "--sorry-uri") { > >> check_parameterでのforwadedフラグチェックは意味無いからなくしていい。 > >> > >> @@ -5657,11 +5657,6 @@ bool protocol_module_ip::put_data_into_sendbuffer( > >> buffer_element.first += sendbuffer_rest_size; > >> buffer_element.second -= sendbuffer_rest_size; > >> sendbuffer_rest_size = 0; > >> - > >> - //add remain item > >> - data_ptr->buffer_sequence.push_back(buffer_element) ; > >> - //delete the item > >> - data_ptr->buffer_sequence.pop_front(); > >> break; > >> } > >> } > >> これは不明 > >> > >> diff --git a/l7vsd/module/protocol/protocol_module_ip.h b/l7vsd/module/ protocol/protocol_module_ip.h > >> index 50d064b..54af5f7 100644 > >> --- a/l7vsd/module/protocol/protocol_module_ip.h > >> +++ b/l7vsd/module/protocol/protocol_module_ip.h > >> @@ -93,8 +93,8 @@ protected: > >> hash = cl_endpoint.address().to_v4().to_ulong() * GOLDEN_RATIO_PRIME; > >> } else { > >> boost::asio::ip::address_v6::bytes_type v6_bytes = cl_endpoint.address().to_v6().to_bytes(); > >> - boost::asio::ip::address_v4::bytes_type v4_bytes = {{v6_bytes[12], v6_bytes[13], v6_bytes[14], > >> v6_bytes[15]}}; > >> - boost::asio::ip::address_v4::address_v4 v4_address = > >> boost::asio::ip::address_v4::address_v4(v4_bytes); > >> + const boost::asio::ip::address_v4::bytes_type v4_ bytes = {{v6_bytes[12], v6_bytes[13], > >> v6_bytes[14], v6_bytes[15]}}; > >> + boost::asio::ip::address_v4 v4_address(v4_bytes); > >> hash = v4_address.to_ulong() * GOLDEN_RATIO_ PRIME; > >> 将来的には治したほうがいい。 > >> > >> } > >> diff --git a/l7vsd/module/protocol/protocol_module_sessionless.cpp b/l7vsd/ module/protocol/protocol_module_sessionless.cpp > >> index d042afb..f655cec 100644 > >> --- a/l7vsd/module/protocol/protocol_module_sessionless.cpp > >> +++ b/l7vsd/module/protocol/protocol_module_sessionless.cpp > >> @@ -356,7 +356,7 @@ protocol_module_base::check_message_result protocol_ module_sessionless::check_pa > >> //set check result true > >> check_message_result check_result; > >> check_result.flag = true; > >> - bool forward_checked = false; > >> + //bool forward_checked = false; > >> bool sorryuri_checked = false; > >> bool stats_checked = false; > >> > >> @@ -408,7 +408,7 @@ protocol_module_base::check_message_result protocol_ module_sessionless::check_pa > >> //option string = "-F" > >> if (*it == "-F" || *it == "--forwarded-for") { > >> //set forward flag ON > >> - forward_checked = true; > >> + //forward_checked = true; > >> } > >> //option string = "-S" > >> else if (*it == "-S" || *it == "--sorry-uri") { > >> いらん。 > >> > >> diff --git a/l7vsd/src/l7vsadm.cpp b/l7vsd/src/l7vsadm.cpp > >> index b63d573..951db90 100644 > >> --- a/l7vsd/src/l7vsadm.cpp > >> +++ b/l7vsd/src/l7vsadm.cpp > >> @@ -2957,9 +2957,10 @@ bool l7vs::l7vsadm::execute(int argc, char *argv[]) > >> > >> // Get l7vsadm execute file path from /proc/(pid)/exe (symbolic link) > >> char l7vsadm_file_path[256]; > >> - ssize_t retsize; > >> + //ssize_t retsize; > >> memset(l7vsadm_file_path, 0, sizeof(l7vsadm_file_path)); > >> - retsize = readlink("/proc/self/exe", l7vsadm_file_path, sizeof(l7vsadm_file_path)); > >> + //retsize = readlink("/proc/self/exe", l7vsadm_file_path, sizeof(l7vsadm_file_path)); > >> + readlink("/proc/self/exe", l7vsadm_file_path, sizeof(l7vsadm_file_ path)); > >> > >> // L7vsadm command conflict check. (Try l7vsadm execute file lock) > >> file_lock lock(l7vsadm_file_path, l7vsadm_err); > >> この直後、ファイルパスでロックをかけようとして、ロックかけられなかったら > >> エラー終了してるからここではエラーチェックしなくていいかも。 > >> してもいいけど。 > >> > >> diff --git a/l7vsd/src/logger_impl.cpp b/l7vsd/src/logger_impl.cpp > >> index 0ab72b1..9401d8f 100644 > >> --- a/l7vsd/src/logger_impl.cpp > >> +++ b/l7vsd/src/logger_impl.cpp > >> @@ -343,9 +343,9 @@ bool l7vs::LoggerImpl::init() > >> } > >> > >> // get hostname > >> - int ret = 0; > >> + //int ret = 0; > >> char buff[HOST_NAME_MAX]; > >> - ret = gethostname(buff, HOST_NAME_MAX); > >> + gethostname(buff, HOST_NAME_MAX); > >> hostname = buff; > >> > >> initialized = true; > >> ここは一応hostnameが取れたかどうか判定してもいいんで無いか? > >> 取れていなかった場合どうする?エラー終了? > >> それともログ用ホスト名なし程度、無視する? > >> > >> diff --git a/l7vsd/src/session_thread_control.cpp b/l7vsd/src/session_ thread_control.cpp > >> index df0c938..2bd5e24 100644 > >> --- a/l7vsd/src/session_thread_control.cpp > >> +++ b/l7vsd/src/session_thread_control.cpp > >> @@ -36,15 +36,17 @@ namespace l7vs > >> void session_thread_control::start_thread() > >> { > >> > >> - int int_val; > >> + //int int_val; > >> > >> upthread.reset(new boost::thread(&session_thread_control:: upstream_run, this)); //! upstream thread create > >> downthread.reset(new boost::thread(&session_thread_control:: downstream_run, this)); //! downstream thread create > >> > >> //pthread_setschedparam > >> - int retval, sched_policy; > >> + //int retval, sched_policy; > >> + int sched_policy; > >> sched_param scheduler_param; > >> - int_val = pthread_getschedparam(upthread->native_handle(), & sched_policy, &scheduler_param); > >> + //int_val = pthread_getschedparam(upthread->native_handle(), & sched_policy, &scheduler_param); > >> + pthread_getschedparam(upthread->native_handle(), &sched_policy, & scheduler_param); > >> if (SCHED_FIFO == sched_algorithm) { > >> scheduler_param.__sched_priority = sched_priority; > >> sched_policy = SCHED_FIFO; > >> @@ -55,8 +57,10 @@ void session_thread_control::start_thread() > >> sched_policy = SCHED_BATCH; > >> } > >> if (0 <= sched_algorithm) { > >> - retval = pthread_setschedparam(upthread-> native_handle(), sched_algorithm, &scheduler_param); > >> - retval = pthread_setschedparam(downthread-> native_handle(), sched_algorithm, &scheduler_param); > >> + //retval = pthread_setschedparam(upthread->native_handle(), sched_algorithm, &scheduler_param); > >> + //retval = pthread_setschedparam(downthread->native_ handle(), sched_algorithm, &scheduler_param); > >> + pthread_setschedparam(upthread->native_handle(), sched_ algorithm, &scheduler_param); > >> + pthread_setschedparam(downthread->native_handle(), sched_ algorithm, &scheduler_param); > >> } > >> > >> } > >> pthread_getschedparamで返されるエラーはESRCHとEFAULTの二つ。EFAULTはSEGV。 ESRCHはスレッドが無効または終了している。 > >> これはエラー処理書いてもいいかもしれない。 > >> setはEINVAL, EPERM, ESRCH, EFAULT。EINVALはパラメータ指定違い。EPERMはスーパー ユーザ権限チェック。 > >> これもESRCHはログだしてもいいかな。 > >> > >> diff --git a/l7vsd/src/virtualservice_base.cpp b/l7vsd/src/virtualservice_ base.cpp > >> index 94ab8a2..994c634 100644 > >> --- a/l7vsd/src/virtualservice_base.cpp > >> +++ b/l7vsd/src/virtualservice_base.cpp > >> @@ -481,7 +481,7 @@ cpu_set_t l7vs::virtualservice_base::get_cpu_ mask(std::string nic_name) > >> map< size_t, string > cpu_nic_map; > >> string buff; > >> ifstream ifs("/proc/interrupts"); > >> - unsigned int target_interrupt; > >> + //unsigned int target_interrupt; > >> size_t target_cpuid = 0; > >> cpu_set_t mask; > >> sched_getaffinity(0, sizeof(cpu_set_t), &mask); > >> @@ -503,7 +503,8 @@ cpu_set_t l7vs::virtualservice_base::get_cpu_ mask(std::string nic_name) > >> algorithm::split(split_vec, buff, algorithm::is_any_of(": ")); > >> if (!split_vec.size()) return mask; // cannot split interrupt > >> algorithm::trim(split_vec[0]); > >> - target_interrupt = lexical_cast(split_vec[0]) ; > >> + //target_interrupt = lexical_cast(split_ vec[0]); > >> + lexical_cast(split_vec[0]); > >> for (size_t i = 0; i < cpu_nic_map.size(); ++i) { > >> size_t start_position = 4 + (i * 11); > >> size_t end_position = 11; > >> これはsched afinity用の使われていないメソッド。 > >> 呼び元のvirtualservice_tcpでifdefしてる。 > >> そもそも、このメソッド自体が未完成。いまは手動でネットワークのキューにピンさ したら > >> スケジューラ任せでよしなにしてくれる。 > >> > >> ===================== > >> > >> (2013/02/06 0:35), Hiroaki Nakano wrote: > >>> たるすぴ@幕張です。 > >>> > >>> ultramonkey-l7-v3のmasterブランチをdebian testingで > >>> コンパイルしてみたら、いくつかエラーが出ました。 > >>> > >>> どうやら、新しいg++では値を代入しても参照されない > >>> 変数はエラーになるようです。 > >>> あと、protocol_module_ip.hにへんなクラス宣言?がありました。 > >>> > >>> ----------- > >>> protocol_module_ip.cpp: In member function 'virtual > >>> l7vs::protocol_module_base::check_message_result > >>> l7vs::protocol_module_ip::check_parameter(const > >>> std::vector >&)': > >>> protocol_module_ip.cpp:327:14: error: variable 'forward_checked' set but > >>> not used [-Werror=unused-but-set-variable] > >>> cc1plus: all warnings being treated as errors > >>> make[4]: *** [protocol_module_ip.lo] エラー 1 > >>> > >>> libtool: compile: g++ -DHAVE_CONFIG_H -I. -I../../.. -g -O2 > >>> -fno-strict-aliasing -Wall -Werror -fPIC -pthread -I../../include > >>> -I../../logger -I../../parameter -DMAX_BUFFER_SIZE=4096 -g -O2 -MT > >>> protocol_module_ip.lo -MD -MP -MF .deps/protocol_module_ip.Tpo -c > >>> protocol_module_ip.cpp -fPIC -DPIC -o .libs/protocol_module_ip.o > >>> protocol_module_sessionless.cpp: In member function 'virtual > >>> l7vs::protocol_module_base::check_message_result > >>> l7vs::protocol_module_sessionless::check_parameter(const > >>> std::vector >&)': > >>> protocol_module_sessionless.cpp:359:14: error: variable > >>> 'forward_checked' set but not used [-Werror=unused-but-set-variable] > >>> In file included from protocol_module_ip.cpp:33:0: > >>> protocol_module_ip.h: In member function 'unsigned int > >>> l7vs::protocol_module_ip::l7vs_ip_service_calc_hash(const endpoint&)': > >>> protocol_module_ip.h:97:25: error: > >>> 'boost::asio::ip::address_v4::address_v4' names the constructor, not the > >>> type > >>> protocol_module_ip.h:97:65: error: expected ';' before 'v4_address' > >>> protocol_module_ip.h:97:127: error: statement cannot resolve address of > >>> overloaded function > >>> protocol_module_ip.h:98:32: error: 'v4_address' was not declared in this > >>> scope > >>> In file included from protocol_module_ip.cpp:33:0: > >>> protocol_module_ip.h:96:65: error: unused variable 'v4_bytes' > >>> [-Werror=unused-variable] > >>> cc1plus: all warnings being treated as errors > >>> make[4]: *** [protocol_module_sessionless.lo] エラー 1 > >>> make[4]: *** 未完了のジョブを待っています.... > >>> cc1plus: all warnings being treated as errors > >>> make[4]: *** [protocol_module_ip.lo] エラー 1 > >>> > >>> > >>> l7vsadm.cpp: In member function ‘bool l7vs::l7vsadm::execute(int, char**) ’: > >>> l7vsadm.cpp:2960:17: error: variable ‘retsize’ set but not used > >>> [-Werror=unused-but-set-variable] > >>> cc1plus: all warnings being treated as errors > >>> make[3]: *** [l7vsadm-l7vsadm.o] エラー 1 > >>> > >>> g++ -DHAVE_CONFIG_H -I. -I../.. -O2 -fno-strict-aliasing -g -Wall > >>> -Werror -pthread -I../include -I../include > >>> -DL7VS_MODULE_PATH="\"/usr/lib64/l7vs\"" -DMAX_BUFFER_SIZE=4096 > >>> -DPARAMETER_FILE="\"/etc/l7vs/l7vs.cf\"" > >>> -DL7VS_CONFIG_SOCK_PATH="\"/var/run/l7vs\"" -DLOGGER_PROCESS_VSD > >>> -DNETSNMP_NO_INLINE -DVERSION=\"3.0.4\" -g -O2 -MT > >>> l7vsd-protocol_module_control.o -MD -MP -MF > >>> .deps/l7vsd-protocol_module_control.Tpo -c -o > >>> l7vsd-protocol_module_control.o `test -f 'protocol_module_control.cpp' > >>> || echo './'`protocol_module_control.cpp > >>> session_thread_control.cpp: In member function ‘void > >>> l7vs::session_thread_control::start_thread()’: > >>> session_thread_control.cpp:39:24: error: variable ‘int_val’ set but not > >>> used [-Werror=unused-but-set-variable] > >>> session_thread_control.cpp:45:16: error: variable ‘retval’ set but not > >>> used [-Werror=unused-but-set-variable] > >>> cc1plus: all warnings being treated as errors > >>> make[3]: *** [l7vsd-session_thread_control.o] エラー 1 > >>> make[3]: *** 未完了のジョブを待っています.... > >>> > >>> > >>> g++ -DHAVE_CONFIG_H -I. -I../.. -O2 -fno-strict-aliasing -g -Wall > >>> -Werror -pthread -I../include -I../include > >>> -DL7VS_MODULE_PATH="\"/usr/lib64/l7vs\"" -DMAX_BUFFER_SIZE=4096 > >>> -DPARAMETER_FILE="\"/etc/l7vs/l7vs.cf\"" > >>> -DL7VS_CONFIG_SOCK_PATH="\"/var/run/l7vs\"" -DLOGGER_PROCESS_VSD > >>> -DNETSNMP_NO_INLINE -DVERSION=\"3.0.4\" -g -O2 -MT > >>> l7vsd-virtualservice_udp.o -MD -MP -MF > >>> .deps/l7vsd-virtualservice_udp.Tpo -c -o l7vsd-virtualservice_udp.o > >>> `test -f 'virtualservice_udp.cpp' || echo './'`virtualservice_udp.cpp > >>> virtualservice_base.cpp: In member function ‘cpu_set_t > >>> l7vs::virtualservice_base::get_cpu_mask(std::string)’: > >>> virtualservice_base.cpp:484:33: error: variable ‘target_interrupt’ set > >>> but not used [-Werror=unused-but-set-variable] > >>> cc1plus: all warnings being treated as errors > >>> make[3]: *** [l7vsd-virtualservice_base.o] エラー 1 > >>> make[3]: *** 未完了のジョブを待っています.... > >>> > >>> > >>> logger_a-logger_impl.o -MD -MP -MF > >>> .deps/libl7vsd_logger_a-logger_impl.Tpo -c -o > >>> libl7vsd_logger_a-logger_impl.o `test -f 'logger_impl.cpp' || echo > >>> './'`logger_impl.cpp > >>> logger_impl.cpp: In member function ‘virtual bool l7vs::LoggerImpl::init() ’: > >>> logger_impl.cpp:346:20: error: variable ‘ret’ set but not used > >>> [-Werror=unused-but-set-variable] > >>> cc1plus: all warnings being treated as errors > >>> make[3]: *** [libl7vsd_logger_a-logger_impl.o] エラー 1 > >>> make[3]: *** 未完了のジョブを待っています.... > >>> ---------------------------------------------------- > >>> > >>> 使っていない変数はコメントにしたり消したりして、 > >>> 変な宣言のところを直したパッチを作ったので添付しておきます。 > >>> # 必要な変数だったのなら、処理が漏れていることになるね。 > >>> > >>> > >>> > >>> > >>> _______________________________________________ > >>> Ultramonkey-l7-develop mailing list > >>> Ultramonkey-l7-develop @ lists.sourceforge.jp > >>> http://lists.sourceforge.jp/mailman/listinfo/ultramonkey-l7-develop > >>> > > > > > > -- > 中野 宏朗 (NAKANO Hiroaki) > NTTコムウェア 品質生産性技術本部 技術SE部 > 基盤ソフトSE・OSS部門 OSS適用推進担当 > Tel: 043-211-2452 (Ext: 特番+26-8341), Fax: 043-211-5086 > Zip/Address: 261-0023 千葉県千葉市美浜区中瀬1-6 NTT幕張ビル21F-En > > _______________________________________________ > Ultramonkey-l7-develop mailing list > Ultramonkey-l7-develop @ lists.sourceforge.jp > http://lists.sourceforge.jp/mailman/listinfo/ultramonkey-l7-develop ----------------------------------------------------------- 日本電信電話株式会社 NTT OSS センタ OSS 推進ユニット 適用支援担当 竹林 信哉(たけばやし しんや) TEL: 03-5860-5035 (直通 5044) E-mail: takebayashi.shinya @ lab.ntt.co.jp GPG ID: 395EFCE8 GPG FP: 58B2 B5D0 A692 1BD8 328B E31E E027 AC35 395E FCE8 ----------------------------------------------------------- From nakano.hiroaki @ nttcom.co.jp Tue Mar 19 13:59:20 2013 From: nakano.hiroaki @ nttcom.co.jp (=?ISO-2022-JP?B?GyRCQ2ZMbiEhOShPLxsoQg==?=) Date: Tue, 19 Mar 2013 13:59:20 +0900 Subject: [Ultramonkey-l7-develop 902] Re: =?iso-2022-jp?b?ZGViaWFuIHRlc3RpbmcbJEIkRyROJTMlcyVRJSQbKEI=?= =?iso-2022-jp?b?GyRCJWslKCVpITwbKEI=?= In-Reply-To: References: <511126D8.60807@iwao.net> <5146D35D.5020704@nttcom.co.jp> <5146D8DE.80409@lab.ntt.co.jp> <5147C87D.4080802@nttcom.co.jp> Message-ID: <5147F0A8.5090407@nttcom.co.jp> 中野%今日は暑い・・・です。 (2013/03/19 12:37), Shinya TAKEBAYASHI wrote: > たけばやしです. > >> 自分は添付ファイル、というかmultipartメール自体が嫌いです^^; >> multipartってMUAによって扱えたり扱えなかったりするので、個人宛メールなら >> いいんですが、MLみたいな不特定多数への同報メールに使うのは推奨できないって >> 思ってたり。 >> >> ・・・って、これはUnix/Linuxで育った人とWindowsで育った人との差かなぁ。 >> netnewsとかだと、multipartなんて使ったらボコボコに怒られたしw > > ニュースで multipart はボコボコにされましたね. > fj あたりは酷かった覚えがあります. > > マルチ・クロスポストとか色々と独自の「しきたり」がありましたね. Subjectに日本語を使うべからず!とかもありましたw RFCではSubjectにはASCII文字以外(もっと制限きつかったかな?)許されておらず、 生の7bitJISは論外、QエンコードかBエンコードかでも論争が起きたりして・・・ 一番は日本語を使わないこと、だったり。 Mewの作者さんもSubjectに日本語入れるときのエンコードとか悩んでたなぁ。 いくつか自分が投げたpatchメールがすべてSubjectに日本語つかっていないのも、 多少その辺を考慮してたりします。 [0/2], [1/2], [2/2]みたいにして、0番は概要、その後は1ファイルパッチ1メールなのは、 LKMLで一番一般的なパッチメール投稿の慣例に準拠させてたりします。 0番の概要をそのままgitのコミットメッセージにしていることが多いですね。 >> 今ではボコボコに言われることはほとんど無いけどw、英語系のOSS開発MLだと >> 添付ファイルメールはいい顔されないんで気をつけたほうがいいですよ。 >> あとWebでのMLログとかでも、添付はうまく扱えないところとかあるし。 > > 単純にソースを見せたいだけなら,pastebin や chop とかが良いかもしれません. > > http://pastebin.com/ > http://chopapp.com > > diff を見せたいなら,sourceforge の個人作業部屋で > レポジトリを作って云々とか. さっき、個人作業部屋の機能をはじめて知りましたw GitHubみたいでいいですね。sourceforge のアカウントさえあれば 自由に使えるから、敷居も低いし。 >> 自宅のLinuxは全部Debian系・・・というか、debian testingしかないですw >> 4.7入るのかな?誰かやってw > > squeeze ですが,4.4.2,4.5.1,4.7.1 まで入れています. > # alternative で切り替えています > > 4.7 環境では boost をインクルードしている箇所でコンパイルエラーになりますね. > 先日 deb パッケージ作るときに引っかかりました. > > もう少し詳しく調べてみることもできますが,時間の制約があるので > すぐにとはいきません. > > 期間,猶予あるのでしょうか. おお。alternativeで切り替えればいいか。なるほど。 JavaのOracle<->OpenJDKでしか使ったことなかった^^; boostインクルード箇所・・・自分も似たようなところで引っかかって、調べてみたら boost以外の何かのパッケージ不足だったかも。 期間は猶予あります。というか、いつまでという制限はないです。 最初は年度末という目標を個人的に立ててましたが、諸事情で年度末より 後にしたほうが良くなりました^^; > 中野 宏朗 wrote in message <5147C87D.4080802 @ nttcom.co.jp >> > *** Subject: [Ultramonkey-l7-develop 900] Re: debian testingでのコンパイルエラー > *** Date: 2013/03/19 11:07:57 >> 中野@幕張です。 >> >> (2013/03/18 18:05), Hibari Michiro wrote: >>> 中野様 >>> >>> 雲雀です。お世話になっております。 >>> >>> チケットの発行お願いします。 >> >> 了解です。 >> >>> diff(patch)ですが、添付ファイルとしても乗っけて >>> 頂けると、手元の環境に取り込んだりするのが楽なので、 >>> 助かります。 >>> (メーラによってはスペースを勝手に省略してしまったりして、 >>> コピペだけだとそのままpatchとして使えなかったりするので。) >> >> 自分は添付ファイル、というかmultipartメール自体が嫌いです^^; >> multipartってMUAによって扱えたり扱えなかったりするので、個人宛メールなら >> いいんですが、MLみたいな不特定多数への同報メールに使うのは推奨できないって >> 思ってたり。 >> >> ・・・って、これはUnix/Linuxで育った人とWindowsで育った人との差かなぁ。 >> netnewsとかだと、multipartなんて使ったらボコボコに怒られたしw >> >> 今ではボコボコに言われることはほとんど無いけどw、英語系のOSS開発MLだと >> 添付ファイルメールはいい顔されないんで気をつけたほうがいいですよ。 >> あとWebでのMLログとかでも、添付はうまく扱えないところとかあるし。 >> >>> Fedora18がRHEL7のベースになると言われているので、 >>> ターゲットとしてはFedora18に同梱されているgcc4.7で >>> コンパイルが通ることがゴールにすると良いかと。 >> >> 自宅のLinuxは全部Debian系・・・というか、debian testingしかないですw >> 4.7入るのかな?誰かやってw >> >>> (2013/03/18 17:42), 中野 宏朗 wrote: >>>> 中野@幕張です。 >>>> >>>> そういえばこれはまだチケット発行してなかったですね。 >>>> v3.1.0には間に合わないかな? >>>> >>>> wheezyのgccは4.6になります。あ、でもバージョンアップ >>>> してるから4.7とかになってたりして。 >>>> >>>> fedoraだとfedora 16が4.6、17だと4.7系ですね。 >>>> v3.1.xの早いうちに対応したほうが良さそうです。 >>>> チケット発行しておきます。 >>>> >>>> 修正方針メモを投稿しておきます。 >>>> こんな感じでOK? >>>> >>>> ===================== >>>> diff --git a/l7vsd/module/protocol/protocol_module_ip.cpp b/l7vsd/module/ > protocol/protocol_module_ip.cpp >>>> index 2d3ec46..8c028d6 100644 >>>> --- a/l7vsd/module/protocol/protocol_module_ip.cpp >>>> +++ b/l7vsd/module/protocol/protocol_module_ip.cpp >>>> @@ -324,7 +324,7 @@ protocol_module_base::check_message_result protocol_ > module_ip::check_parameter(c >>>> bool timeout_flag = false; >>>> bool reschedule_flag = false; >>>> bool no_reschedule_flag = false; >>>> - bool forward_checked = false; >>>> + //bool forward_checked = false; >>>> bool sorryuri_checked = false; >>>> bool stats_checked = false; >>>> >>>> @@ -450,7 +450,7 @@ protocol_module_base::check_message_result protocol_ > module_ip::check_parameter(c >>>> //option string = "-F" >>>> else if (*it == "-F" || *it == "--forwarded-for") > { >>>> //set forward flag ON >>>> - forward_checked = true; >>>> + //forward_checked = true; >>>> } >>>> //option string = "-S" >>>> else if (*it == "-S" || *it == "--sorry-uri") { >>>> check_parameterでのforwadedフラグチェックは意味無いからなくしていい。 >>>> >>>> @@ -5657,11 +5657,6 @@ bool protocol_module_ip::put_data_into_sendbuffer( >>>> buffer_element.first += sendbuffer_rest_size; >>>> buffer_element.second -= sendbuffer_rest_size; >>>> sendbuffer_rest_size = 0; >>>> - >>>> - //add remain item >>>> - data_ptr->buffer_sequence.push_back(buffer_element) > ; >>>> - //delete the item >>>> - data_ptr->buffer_sequence.pop_front(); >>>> break; >>>> } >>>> } >>>> これは不明 >>>> >>>> diff --git a/l7vsd/module/protocol/protocol_module_ip.h b/l7vsd/module/ > protocol/protocol_module_ip.h >>>> index 50d064b..54af5f7 100644 >>>> --- a/l7vsd/module/protocol/protocol_module_ip.h >>>> +++ b/l7vsd/module/protocol/protocol_module_ip.h >>>> @@ -93,8 +93,8 @@ protected: >>>> hash = cl_endpoint.address().to_v4().to_ulong() * > GOLDEN_RATIO_PRIME; >>>> } else { >>>> boost::asio::ip::address_v6::bytes_type v6_bytes > = cl_endpoint.address().to_v6().to_bytes(); >>>> - boost::asio::ip::address_v4::bytes_type v4_bytes = > {{v6_bytes[12], v6_bytes[13], v6_bytes[14], >>>> v6_bytes[15]}}; >>>> - boost::asio::ip::address_v4::address_v4 v4_address > = >>>> boost::asio::ip::address_v4::address_v4(v4_bytes); >>>> + const boost::asio::ip::address_v4::bytes_type v4_ > bytes = {{v6_bytes[12], v6_bytes[13], >>>> v6_bytes[14], v6_bytes[15]}}; >>>> + boost::asio::ip::address_v4 v4_address(v4_bytes); >>>> hash = v4_address.to_ulong() * GOLDEN_RATIO_ > PRIME; >>>> 将来的には治したほうがいい。 >>>> >>>> } >>>> diff --git a/l7vsd/module/protocol/protocol_module_sessionless.cpp b/l7vsd/ > module/protocol/protocol_module_sessionless.cpp >>>> index d042afb..f655cec 100644 >>>> --- a/l7vsd/module/protocol/protocol_module_sessionless.cpp >>>> +++ b/l7vsd/module/protocol/protocol_module_sessionless.cpp >>>> @@ -356,7 +356,7 @@ protocol_module_base::check_message_result protocol_ > module_sessionless::check_pa >>>> //set check result true >>>> check_message_result check_result; >>>> check_result.flag = true; >>>> - bool forward_checked = false; >>>> + //bool forward_checked = false; >>>> bool sorryuri_checked = false; >>>> bool stats_checked = false; >>>> >>>> @@ -408,7 +408,7 @@ protocol_module_base::check_message_result protocol_ > module_sessionless::check_pa >>>> //option string = "-F" >>>> if (*it == "-F" || *it == "--forwarded-for") { >>>> //set forward flag ON >>>> - forward_checked = true; >>>> + //forward_checked = true; >>>> } >>>> //option string = "-S" >>>> else if (*it == "-S" || *it == "--sorry-uri") { >>>> いらん。 >>>> >>>> diff --git a/l7vsd/src/l7vsadm.cpp b/l7vsd/src/l7vsadm.cpp >>>> index b63d573..951db90 100644 >>>> --- a/l7vsd/src/l7vsadm.cpp >>>> +++ b/l7vsd/src/l7vsadm.cpp >>>> @@ -2957,9 +2957,10 @@ bool l7vs::l7vsadm::execute(int argc, char *argv[]) >>>> >>>> // Get l7vsadm execute file path from /proc/(pid)/exe (symbolic > link) >>>> char l7vsadm_file_path[256]; >>>> - ssize_t retsize; >>>> + //ssize_t retsize; >>>> memset(l7vsadm_file_path, 0, sizeof(l7vsadm_file_path)); >>>> - retsize = readlink("/proc/self/exe", l7vsadm_file_path, > sizeof(l7vsadm_file_path)); >>>> + //retsize = readlink("/proc/self/exe", l7vsadm_file_path, > sizeof(l7vsadm_file_path)); >>>> + readlink("/proc/self/exe", l7vsadm_file_path, sizeof(l7vsadm_file_ > path)); >>>> >>>> // L7vsadm command conflict check. (Try l7vsadm execute file lock) >>>> file_lock lock(l7vsadm_file_path, l7vsadm_err); >>>> この直後、ファイルパスでロックをかけようとして、ロックかけられなかったら >>>> エラー終了してるからここではエラーチェックしなくていいかも。 >>>> してもいいけど。 >>>> >>>> diff --git a/l7vsd/src/logger_impl.cpp b/l7vsd/src/logger_impl.cpp >>>> index 0ab72b1..9401d8f 100644 >>>> --- a/l7vsd/src/logger_impl.cpp >>>> +++ b/l7vsd/src/logger_impl.cpp >>>> @@ -343,9 +343,9 @@ bool l7vs::LoggerImpl::init() >>>> } >>>> >>>> // get hostname >>>> - int ret = 0; >>>> + //int ret = 0; >>>> char buff[HOST_NAME_MAX]; >>>> - ret = gethostname(buff, HOST_NAME_MAX); >>>> + gethostname(buff, HOST_NAME_MAX); >>>> hostname = buff; >>>> >>>> initialized = true; >>>> ここは一応hostnameが取れたかどうか判定してもいいんで無いか? >>>> 取れていなかった場合どうする?エラー終了? >>>> それともログ用ホスト名なし程度、無視する? >>>> >>>> diff --git a/l7vsd/src/session_thread_control.cpp b/l7vsd/src/session_ > thread_control.cpp >>>> index df0c938..2bd5e24 100644 >>>> --- a/l7vsd/src/session_thread_control.cpp >>>> +++ b/l7vsd/src/session_thread_control.cpp >>>> @@ -36,15 +36,17 @@ namespace l7vs >>>> void session_thread_control::start_thread() >>>> { >>>> >>>> - int int_val; >>>> + //int int_val; >>>> >>>> upthread.reset(new boost::thread(&session_thread_control:: > upstream_run, this)); //! upstream thread create >>>> downthread.reset(new boost::thread(&session_thread_control:: > downstream_run, this)); //! downstream thread create >>>> >>>> //pthread_setschedparam >>>> - int retval, sched_policy; >>>> + //int retval, sched_policy; >>>> + int sched_policy; >>>> sched_param scheduler_param; >>>> - int_val = pthread_getschedparam(upthread->native_handle(), & > sched_policy, &scheduler_param); >>>> + //int_val = pthread_getschedparam(upthread->native_handle(), & > sched_policy, &scheduler_param); >>>> + pthread_getschedparam(upthread->native_handle(), &sched_policy, & > scheduler_param); >>>> if (SCHED_FIFO == sched_algorithm) { >>>> scheduler_param.__sched_priority = sched_priority; >>>> sched_policy = SCHED_FIFO; >>>> @@ -55,8 +57,10 @@ void session_thread_control::start_thread() >>>> sched_policy = SCHED_BATCH; >>>> } >>>> if (0 <= sched_algorithm) { >>>> - retval = pthread_setschedparam(upthread-> > native_handle(), sched_algorithm, &scheduler_param); >>>> - retval = pthread_setschedparam(downthread-> > native_handle(), sched_algorithm, &scheduler_param); >>>> + //retval = pthread_setschedparam(upthread->native_handle(), > sched_algorithm, &scheduler_param); >>>> + //retval = pthread_setschedparam(downthread->native_ > handle(), sched_algorithm, &scheduler_param); >>>> + pthread_setschedparam(upthread->native_handle(), sched_ > algorithm, &scheduler_param); >>>> + pthread_setschedparam(downthread->native_handle(), sched_ > algorithm, &scheduler_param); >>>> } >>>> >>>> } >>>> pthread_getschedparamで返されるエラーはESRCHとEFAULTの二つ。EFAULTはSEGV。 > ESRCHはスレッドが無効または終了している。 >>>> これはエラー処理書いてもいいかもしれない。 >>>> setはEINVAL, EPERM, ESRCH, EFAULT。EINVALはパラメータ指定違い。EPERMはスーパー > ユーザ権限チェック。 >>>> これもESRCHはログだしてもいいかな。 >>>> >>>> diff --git a/l7vsd/src/virtualservice_base.cpp b/l7vsd/src/virtualservice_ > base.cpp >>>> index 94ab8a2..994c634 100644 >>>> --- a/l7vsd/src/virtualservice_base.cpp >>>> +++ b/l7vsd/src/virtualservice_base.cpp >>>> @@ -481,7 +481,7 @@ cpu_set_t l7vs::virtualservice_base::get_cpu_ > mask(std::string nic_name) >>>> map< size_t, string > cpu_nic_map; >>>> string buff; >>>> ifstream ifs("/proc/interrupts"); >>>> - unsigned int target_interrupt; >>>> + //unsigned int target_interrupt; >>>> size_t target_cpuid = 0; >>>> cpu_set_t mask; >>>> sched_getaffinity(0, sizeof(cpu_set_t), &mask); >>>> @@ -503,7 +503,8 @@ cpu_set_t l7vs::virtualservice_base::get_cpu_ > mask(std::string nic_name) >>>> algorithm::split(split_vec, buff, algorithm::is_any_of(": > ")); >>>> if (!split_vec.size()) return mask; // cannot split > interrupt >>>> algorithm::trim(split_vec[0]); >>>> - target_interrupt = lexical_cast(split_vec[0]) > ; >>>> + //target_interrupt = lexical_cast(split_ > vec[0]); >>>> + lexical_cast(split_vec[0]); >>>> for (size_t i = 0; i < cpu_nic_map.size(); ++i) { >>>> size_t start_position = 4 + (i * 11); >>>> size_t end_position = 11; >>>> これはsched afinity用の使われていないメソッド。 >>>> 呼び元のvirtualservice_tcpでifdefしてる。 >>>> そもそも、このメソッド自体が未完成。いまは手動でネットワークのキューにピンさ > したら >>>> スケジューラ任せでよしなにしてくれる。 >>>> >>>> ===================== >>>> >>>> (2013/02/06 0:35), Hiroaki Nakano wrote: >>>>> たるすぴ@幕張です。 >>>>> >>>>> ultramonkey-l7-v3のmasterブランチをdebian testingで >>>>> コンパイルしてみたら、いくつかエラーが出ました。 >>>>> >>>>> どうやら、新しいg++では値を代入しても参照されない >>>>> 変数はエラーになるようです。 >>>>> あと、protocol_module_ip.hにへんなクラス宣言?がありました。 >>>>> >>>>> ----------- >>>>> protocol_module_ip.cpp: In member function 'virtual >>>>> l7vs::protocol_module_base::check_message_result >>>>> l7vs::protocol_module_ip::check_parameter(const >>>>> std::vector >&)': >>>>> protocol_module_ip.cpp:327:14: error: variable 'forward_checked' set but >>>>> not used [-Werror=unused-but-set-variable] >>>>> cc1plus: all warnings being treated as errors >>>>> make[4]: *** [protocol_module_ip.lo] エラー 1 >>>>> >>>>> libtool: compile: g++ -DHAVE_CONFIG_H -I. -I../../.. -g -O2 >>>>> -fno-strict-aliasing -Wall -Werror -fPIC -pthread -I../../include >>>>> -I../../logger -I../../parameter -DMAX_BUFFER_SIZE=4096 -g -O2 -MT >>>>> protocol_module_ip.lo -MD -MP -MF .deps/protocol_module_ip.Tpo -c >>>>> protocol_module_ip.cpp -fPIC -DPIC -o .libs/protocol_module_ip.o >>>>> protocol_module_sessionless.cpp: In member function 'virtual >>>>> l7vs::protocol_module_base::check_message_result >>>>> l7vs::protocol_module_sessionless::check_parameter(const >>>>> std::vector >&)': >>>>> protocol_module_sessionless.cpp:359:14: error: variable >>>>> 'forward_checked' set but not used [-Werror=unused-but-set-variable] >>>>> In file included from protocol_module_ip.cpp:33:0: >>>>> protocol_module_ip.h: In member function 'unsigned int >>>>> l7vs::protocol_module_ip::l7vs_ip_service_calc_hash(const endpoint&)': >>>>> protocol_module_ip.h:97:25: error: >>>>> 'boost::asio::ip::address_v4::address_v4' names the constructor, not the >>>>> type >>>>> protocol_module_ip.h:97:65: error: expected ';' before 'v4_address' >>>>> protocol_module_ip.h:97:127: error: statement cannot resolve address of >>>>> overloaded function >>>>> protocol_module_ip.h:98:32: error: 'v4_address' was not declared in this >>>>> scope >>>>> In file included from protocol_module_ip.cpp:33:0: >>>>> protocol_module_ip.h:96:65: error: unused variable 'v4_bytes' >>>>> [-Werror=unused-variable] >>>>> cc1plus: all warnings being treated as errors >>>>> make[4]: *** [protocol_module_sessionless.lo] エラー 1 >>>>> make[4]: *** 未完了のジョブを待っています.... >>>>> cc1plus: all warnings being treated as errors >>>>> make[4]: *** [protocol_module_ip.lo] エラー 1 >>>>> >>>>> >>>>> l7vsadm.cpp: In member function ‘bool l7vs::l7vsadm::execute(int, char**) > ’: >>>>> l7vsadm.cpp:2960:17: error: variable ‘retsize’ set but not used >>>>> [-Werror=unused-but-set-variable] >>>>> cc1plus: all warnings being treated as errors >>>>> make[3]: *** [l7vsadm-l7vsadm.o] エラー 1 >>>>> >>>>> g++ -DHAVE_CONFIG_H -I. -I../.. -O2 -fno-strict-aliasing -g -Wall >>>>> -Werror -pthread -I../include -I../include >>>>> -DL7VS_MODULE_PATH="\"/usr/lib64/l7vs\"" -DMAX_BUFFER_SIZE=4096 >>>>> -DPARAMETER_FILE="\"/etc/l7vs/l7vs.cf\"" >>>>> -DL7VS_CONFIG_SOCK_PATH="\"/var/run/l7vs\"" -DLOGGER_PROCESS_VSD >>>>> -DNETSNMP_NO_INLINE -DVERSION=\"3.0.4\" -g -O2 -MT >>>>> l7vsd-protocol_module_control.o -MD -MP -MF >>>>> .deps/l7vsd-protocol_module_control.Tpo -c -o >>>>> l7vsd-protocol_module_control.o `test -f 'protocol_module_control.cpp' >>>>> || echo './'`protocol_module_control.cpp >>>>> session_thread_control.cpp: In member function ‘void >>>>> l7vs::session_thread_control::start_thread()’: >>>>> session_thread_control.cpp:39:24: error: variable ‘int_val’ set but not >>>>> used [-Werror=unused-but-set-variable] >>>>> session_thread_control.cpp:45:16: error: variable ‘retval’ set but not >>>>> used [-Werror=unused-but-set-variable] >>>>> cc1plus: all warnings being treated as errors >>>>> make[3]: *** [l7vsd-session_thread_control.o] エラー 1 >>>>> make[3]: *** 未完了のジョブを待っています.... >>>>> >>>>> >>>>> g++ -DHAVE_CONFIG_H -I. -I../.. -O2 -fno-strict-aliasing -g -Wall >>>>> -Werror -pthread -I../include -I../include >>>>> -DL7VS_MODULE_PATH="\"/usr/lib64/l7vs\"" -DMAX_BUFFER_SIZE=4096 >>>>> -DPARAMETER_FILE="\"/etc/l7vs/l7vs.cf\"" >>>>> -DL7VS_CONFIG_SOCK_PATH="\"/var/run/l7vs\"" -DLOGGER_PROCESS_VSD >>>>> -DNETSNMP_NO_INLINE -DVERSION=\"3.0.4\" -g -O2 -MT >>>>> l7vsd-virtualservice_udp.o -MD -MP -MF >>>>> .deps/l7vsd-virtualservice_udp.Tpo -c -o l7vsd-virtualservice_udp.o >>>>> `test -f 'virtualservice_udp.cpp' || echo './'`virtualservice_udp.cpp >>>>> virtualservice_base.cpp: In member function ‘cpu_set_t >>>>> l7vs::virtualservice_base::get_cpu_mask(std::string)’: >>>>> virtualservice_base.cpp:484:33: error: variable ‘target_interrupt’ set >>>>> but not used [-Werror=unused-but-set-variable] >>>>> cc1plus: all warnings being treated as errors >>>>> make[3]: *** [l7vsd-virtualservice_base.o] エラー 1 >>>>> make[3]: *** 未完了のジョブを待っています.... >>>>> >>>>> >>>>> logger_a-logger_impl.o -MD -MP -MF >>>>> .deps/libl7vsd_logger_a-logger_impl.Tpo -c -o >>>>> libl7vsd_logger_a-logger_impl.o `test -f 'logger_impl.cpp' || echo >>>>> './'`logger_impl.cpp >>>>> logger_impl.cpp: In member function ‘virtual bool l7vs::LoggerImpl::init() > ’: >>>>> logger_impl.cpp:346:20: error: variable ‘ret’ set but not used >>>>> [-Werror=unused-but-set-variable] >>>>> cc1plus: all warnings being treated as errors >>>>> make[3]: *** [libl7vsd_logger_a-logger_impl.o] エラー 1 >>>>> make[3]: *** 未完了のジョブを待っています.... >>>>> ---------------------------------------------------- >>>>> >>>>> 使っていない変数はコメントにしたり消したりして、 >>>>> 変な宣言のところを直したパッチを作ったので添付しておきます。 >>>>> # 必要な変数だったのなら、処理が漏れていることになるね。 >>>>> >>>>> >>>>> >>>>> >>>>> _______________________________________________ >>>>> Ultramonkey-l7-develop mailing list >>>>> Ultramonkey-l7-develop @ lists.sourceforge.jp >>>>> http://lists.sourceforge.jp/mailman/listinfo/ultramonkey-l7-develop >>>>> >>> >>> >> >> -- >> 中野 宏朗 (NAKANO Hiroaki) >> _______________________________________________ >> Ultramonkey-l7-develop mailing list >> Ultramonkey-l7-develop @ lists.sourceforge.jp >> http://lists.sourceforge.jp/mailman/listinfo/ultramonkey-l7-develop > > > ----------------------------------------------------------- > 日本電信電話株式会社 NTT OSS センタ > OSS 推進ユニット 適用支援担当 > > 竹林 信哉(たけばやし しんや) > > TEL: 03-5860-5035 (直通 5044) > E-mail: takebayashi.shinya @ lab.ntt.co.jp > GPG ID: 395EFCE8 > GPG FP: 58B2 B5D0 A692 1BD8 328B E31E E027 AC35 395E FCE8 > ----------------------------------------------------------- > > > -- 中野 宏朗 (NAKANO Hiroaki)