2021/03,江端さんの忘備録

私の衣服に対する「絶望的な無関心」について、嫁さんは、結婚して2年後には諦めていたようです。

As for my "abject indifference" to clothing, my wife seemed to have given up on that after two years of marriage.

嫁さんは、私を、「オタク」&「秋葉原」で語られる男たちと、同じカテゴリーとして見ているのかもしれませんが、実はこれも正しくありません。

My wife may see me as being in the same category as the men talked about in "Otaku" & "Akihabara", but this is actually not correct either.

彼らは、彼らなりの、こだわりがあって、あのような(どのような?)装いをしているのだと思います ―― 多分。

I think they have their own particular way of dressing like that. They are wearing such (what?) clothing because they are particular about it -- maybe.

しかし、私は、私なりの、衣服に対するこだわりがあります。

However, I have my own particular way of thinking about clothes.

それは、「意匠(デザイン)」ではなく、「機能(ファンクション)」です。

It is not "design" but "function.

具体的には、(1)コスト、(2)耐久性、(3)着心地、(4)流用性です。

Specifically, (1) cost, (2) durability, (3) comfort, and (4) reusability.

安い、長期間着られる、簡単にほつれたり破れたりしない、外見を良くする為に身体を締めつけたり、不快な感触がない、身体の稼動範囲に制限が加わったりしない、どのような服と合わせても違和感がない ―― 等々、です。

Cheap, Wearable for a long time, not easily frayed or torn, not constrict the body, not feel uncomfortable, keep to range of motion of the body, not uncomfortable when trying to fit any kind of clothing.

-----

私は、衣服をAmazonで購入することが多く、特にジーンズについては、100%、Amazon(というか、中国に)発注しています。

I buy a lot of my clothes from Amazon.com, especially jeans, which I order 100% from Amazon.com (it means "from China").

ただし、着荷後に、そのジーンズを自分で「裾上げ」しなければなりません。

However, I have to "hem" the jeans myself after it arrive.

私には、手縫いの技術がありませんし、ミシンの操作方法も知りません(そもそも、我が家にはミシンがない)。

I don't have any hand-sewing skills, nor do I know how to operate a sewing machine (we don't have one in the first place).

ですので、もっぱら「裾上げテープ」に頼っているのですが、これも時間の経過とともに、剥れてきてしまいます。まあ1年は持ちません。

So, I have been relying on "hemming tape", but this also peels off as time goes by. It doesn't last more than a year.

-----

そもそも、裾が崩れてきているのに気がつくのは、ジーンズを着た時です。

To begin with, it is when I put on your jeans that I notice that the hem is falling apart.

私は、外出5分前に服を着るので、裾の崩れに気がついた時には、もう手遅れになります。

I get dressed five minutes before I go out, so by the time I notice the hem crumbling, it's too late.

しかし、着ていく服を考え直すことは、私にとっては「面倒」というか正直「苦痛」です。

However, rethinking what to wear is a "hassle" or honestly a "pain" for me.

-----

そこで、お勧めするのが「木工用ボンド」です。

Therefore, I recommend "wood glue".

(すでに何度かお話しましたが、私は、木工用ボンドで、食器の復元なども試みております)

(As I have already mentioned several times, I am also trying to restore dishes with wood glue.)

裾の落ちたところに、木工用ボンドを塗りたくって、さらに、ホッチキスで仮固定します。

I apply wood glue to the fallen hem, and temporarily fix it with staples.

そして、そのまま外出します ―― 外出後、1時間もすれば、固着しますので、ホッチキスの針を手で取り除けば足ります。

Then I go out -- an hour after I leave the house, it will stick and it's enough to remove the staple needle by hand.

例えば、駅のベンチでホッチキスを取り外します。

For example, I remove a stapler from a station bench.

ボンドは、ジーンズの内側に塗布するので、外観の問題はありません。

The bond is applied to the inside of the jeans, so there are no appearance issues.

(外側に塗布しなければならない場合は、その上から、服と同色の油性マジックで塗れば、そこそこ目立ちません)

(If I have to apply it on the outside, I can paint over it with an oil-based magic marker of the same color as your clothes. It is so-so)

-----

私の木工用ボンド活用法については、すでにご報告していますが、

I've already reported on my use of wood glue.

最近は、

Recently I am trying it for

■ポケットの穴の空いたジャケット

- Jacket with holes in the pockets

■背中の破れたウインドブレーカー

- Windbreaker with torn back

など、次々と修復をしています。

-----

家族は、このような私の行為を「貧乏くさい」と言いますが、これは2つの意味で語弊があります。

My family calls this kind of behavior of mine "poor-looking" which is a misnomer in two ways.

第1に、我が家は、常に金銭に余裕がありません。「貧乏くさい」のではなく「貧乏」です。

First of all, our family has always been tight on money. So This is not "poor-looking" but "poor"

第2に、物品の一部(裾やら穴やら)が欠損したくらいで、その物品を簡単に廃棄することを、どのように考えるか、です。

Secondly, how do I consider it easy to dispose of an item just because a part of it (hem, hole, etc.) is missing?

―― そこに愛はあるんか?

I wonder if there is any love in your mind"

と、思うのです。

-----

私は、秋葉原のジャンク屋で拾ってきた物品で、自宅セキュリティシステムを作り上げるエンジニアです。

I am an engineer who builds home security systems with parts I pick up at junk shops in Akihabara.

私には、まだ十分に使える機能を有する物品が、その目的を果せないでいることが、納得できないのです。

I am not convinced that parts that is still functional enough to be used them not fulfilling their purpose.

実のところ、私は、真に「ハートフル」な人間なのです。

As a matter of fact, I am a truly "heartfelt" person.

「人間嫌い」ではありますが。

I'm a misanthrope, though.

2021/03,江端さんの忘備録

東京オリンピックの聖火リレーが始まりました。

The torch relay for the Tokyo Olympics has begun.

コロナ禍下におけるオリンピック開催決定を「太平洋戦争に突入した過去の日本政府と同じ」と言う人もいます。

Some people say that the decision to hold the Olympics in the midst of the Corona disaster is the same as the Japanese government's decision in the past to enter the Pacific War.

ただ、太平洋戦争については、世論が「戦争を導いた」という面が強いです。

However, with regard to the Pacific War, there is a strong aspect of public opinion that "led to the war.

ですので、このロジックには、違和感があります。

Therefore, I feel uncomfortable with this logic.

-----

「アスリート達のこれまでの努力を考えると、オリンピックは開催すべきだ」

"Considering all the hard work these athletes have put in, the Olympics should be held."

という意見もありますが、私は、この考え方に、個人的に共感できません。

However, I personally do not share this view.

もし、私の娘が、オリンピックに出場する選手であれば、IOCの委員に直訴するくらいのことはしたかもしれません(拉致、監禁、恐喝くらいもするかもしれません)

If my daughter is an Olympic athlete, I might go so far as to appeal directly to the IOC commissioners (or even kidnap, imprison, or blackmail her).

しかし、私は、オリンピックに出場するような選手に知り合いがいません。

However, I do not know any athletes who would compete in the Olympics.

そして、私は、赤の他人の立場に同情できるほど、できた人間ではありません。

And I'm not the kind of person who is capable of sympathizing with a stranger's situation.

私にとっては、来期の仕事の内容や、次女の学費や、ローンの返済や、人間ドックの結果の方が、はるかに深刻な問題です。

For me, the details of my job for the next term, my second daughter's tuition, the repayment of my loan, and the results of my physical examination are much more serious issues.

それに、生まれついての運動音痴でもありますので、スポーツ一般に興味がありません ―― 特定のスポーツについては、(理不尽な理由で)嫌悪しているくらいです。

I am so uncoordinated naturally, so I'm not interested in sports in general -- I even have an aversion (for irrational reasons) to certain sports.

-----

結論から言うと、私は、この状況(コロナ禍)で開催されるオリンピックを「見てみたい」という、その一点のみで、オリンピック開催を支持しています。

In conclusion, I support the holding of the Olympic Games for one reason only: I would like to "see" the Olympics held in this situation (corona disaster).

今回のオリンピックの開催は、想像を絶する難しさだと思います。

I think it is unimaginably difficult to organize this Olympics.

アスリートの方々には感情移入できない私でも、開催運営を行う事務局の人達には、心からの同情と支援と声援を贈れます。

Even though I can't empathize with the athletes, I can offer my heartfelt sympathy, support, and cheers to the people in charge of organizing the event.

そして、このオリンピックは、その成否に関係なく『東京モデル』という、新しいオリンピックのモデルになると思っています。

And regardless of its success or failure, I believe that this Olympics will become a new Olympic model, the "Tokyo Model".

私は、オリンピックが、日本の国体よりショボい・・・もとい、小規模に行われても、無観客でも、参加国が1ケタであっても、全く問題ないと考えています。

I don't think it's a problem if the Olympics are smaller than Japan's national games, or if they are held on a smaller scale, or if there are no spectators, or if the number of participating countries is in the single digits.

将来の話をすれば、リアルタイムネットワークを使った、競技の各国での分散開催にして、個人またはチームでの対抗が必要な競技は、今回は中止してもよい、というくらいまで思っています。

In the future, I would like to see the competitions held in different countries using a real-time network, so that competitions that require individual or team competition can be cancelled.

古代オリンピックまで遡って「競走1種目」とまでは言いませんが、ぶっちゃけ、そこまで腹を括っていいんじゃないかな、と。

I'm not saying that we should go back to the ancient Olympics and make it "one event," but frankly, I think we should be prepared to go that far.

まあ、各種の商業的な利権が絡むイベントであるので、そんな簡単に語ることはできない、とは分かってはいるのですが。

Well, I know it's not that easy to talk about this event since there are various commercial interests involved.

-----

そもそも、私、今回と同様な世界パンデミックは、これからも度々発生する、と思っています。

In the first place, I believe that global pandemics similar to this Corona will occur again and again in the future.

変異株のことを勉強した今とあっては、『それこそ、4年に1度くらいはやってくるんじゃないかな』と、予感しています。

Now that I've studied the mutant virus, I have a feeling that 'that's exactly what's going to happen every four years or so.

ならば、今回の『東京モデル』は、これからのオリンピックやその他の大型イベントに対する、大きなユースケースになるはずです ―― その成否に関係なく。

If so, then the "Tokyo Model" should be a great use case for the Olympics and other major events in the future -- regardless of their success or failure.

今回のオリンピックの強行で、1日1万人の感染者が発生して、医療崩壊どころか、医療現場の逃散が発生し、死ななくても良い人が、ゴロゴロ死ぬかもしれません。

If the Olympics are forced to go ahead, 10,000 people a day will be infected, which will not only cause a collapse of medical care, but also an exodus from the medical field, and many people who do not need to die may die.

その中には私や私の家族も入っているかもしれません。

Some of them may be me and my family.

その結果、この日記の内容を読み直して、死ぬほど後悔するかもしれません。

As a result, I may regret re-reading the contents of this diary.

ですが ―― そうでないかもしれない。

But -- or maybe not.

結局のところ、やってみないと分からないのです。

After all, we can't know until we try.

-----

ならば、私は、今の私の気持ち「見てみたい」を優先します。

Then I'll prioritize my current feeling of "I want to see it".

成功することだけが「成果」ではない ―― 私は、それを良く知っています。

Success is not the only "achievement" -- I know that very well.

2021/03,江端さんの忘備録

小学生だったか、中学校だったか忘れましたが、誤って新幹線に乗り込んで東京まで運ばれてしまったことがあります。

I don't remember if I was in elementary school or junior high school, but I once accidentally boarded a bullet train and was transported to Tokyo.

その時、一緒に行動していた友人が、私の親に一連の事象を連絡してくれました。

A friend who was with me at the time called my parents to inform them of the sequence of events.

その電話を受けた母は、友人にこう言ったそうです。

When my mother received the phone call, she said to my friend, "I'm sorry.

―― あの子なら、何をしても帰ってくるよ

"He'll come back, no matter what"

-----

これを、「全幅の信頼」と呼ぶのか「完全な放任」と呼ぶのか ―― 分かりませんが、

I don't know whether to call this "total trust" or "total abandonment.

「愛がなかった」とは、思っていないんですよね、この私でも。

I don't believe that there was no love, even for me.

未分類

gmailから"iPhone PC 紛失 対応"で検索のこと

2021/03,江端さんの忘備録

私のkobore.netサイトでお世話になっているプロバイダの管理用インターフェースがリニューアルしたようです。

It seems that the administration interface of the provider of my kobore.net site has been renewed.

そこで、kobore.netサイトのアクセス状況を見てみたのですが、ビックリしました。

So I took a look at the access status of the kobore.net site, and was surprised.

先ずは、アクセス先です。

The first step is to access the site.

kobore.netのトップページからアクセスしているのは、全体の4%程度でした。ということは、日々のアクセスカウントは、実質アクセスカウンターの25倍程度見ておかなればならないようです。

Only about 4% of the total number of accesses were from the top page of kobore.net. This means that the daily access count should be about 25 times higher than the actual access counter.

ブログへの直接アクセスが34%は想定内ですが、驚いたのは、英語版のブログへのアクセスが"5%"もあったということです。

The 34% of direct access to the blog was expected, but what surprised me was that "5%" of the access was to the English version of the blog.

「英語版なんか、誰も読んでいないだろう」と、これまで惰性で続けていたのですが、これは結構無視できない数値でした。

I've been updating the English version of the site out of sheer inertia, thinking that no one would be reading it, but this was a number that I couldn't ignore.

-----

では、どこからのアクセスがあるのか、を調べてみると、

So, let's see where they're coming from.

分かる範囲で言えば、上から、日本、ドイツ、欧州(というカテゴリ)、チェコ、ウクライナ、ロシア、そして米国ですね。

As far as I can tell, from the top, it's Japan, Germany, Europe (a category), Czech Republic, Ukraine, Russia, and the United States.

アクセス場所の不明が全体の67%もあるので、アテにできる順位ではありませんが、まあ、なんというか ―― 80年前の枢軸国(イタリアがいないけど) ―― に思いを馳せていました。

This is not a reliable ranking, as 67% of the total number of access locations are unknown, however, what can I say -- I was thinking about the Axis Powers (without Italy, though) 80 years ago.

たしかに、私にとっても、これまで一緒に働いて、一番相性のよかった外国人は、ドイツの人でした。

Indeed, for me, the most compatible foreigner I have ever worked with has been a German.

-----

まあ、ここまではいいですよ。

Well, so far, so good.

納得できないのが、「どのようなキーワードで、kobore.netに達したか」です。

What I don't agree with is "What keywords did you use to reach kobore.net?

「爆弾の作り方」って、何?

What do you mean, "how to make a bomb"?

いや、分かっていますけどね。このページですよ。

"Well, I know ... It's this page."

私のブログは、テロリスト、またはテロリスト予備軍に真っ先に検索されている訳ですよ ―― 釈然としませんが。

My blog is one of the first to be searched for by terrorists or potential terrorists -- I don't get it.

まあ、実際、「有害サイト指定」受けていたこともあります。

Well, actually, there was a time when it was designated as a "harmful site".

多分、題目だけで判断されて、内容は読まれていないのだろう、と思っています。

I believe that people are probably only judging the title and not reading the content.

2021/03,江端さんの技術メモ

自宅の塗装工事後に、以下のような現象が現われてきました。チョークで書かれたような白いものが壁に浮き出てきます。

白華現象(エフロ)と言われるものらしく、壁の内部から出てくる水分によって引き起こされる現象とのことです。

そこで、本日、この対応を実地で教えて貰いましたので、記録しておきます。

(Step.1)対象箇所を、水(水道水)で塗らす。

(Step.2) 市販の溶液を準備する

(Step.3)溶液を塗布する

(Step.4)3分ほど待ってから、水で洗い流す

以上

2021/03,江端さんの忘備録

我が家の長女が、今頃になって「エヴァンゲリオン」にロックオンされました。

Our senior daughter is now locked onto "Evangelion".

彼女は、現在、上映中の映画から始まったようです。

She seems to have started with a movie that is currently being shown.

『最終回からアニメにはまる父親の血脈』という訳でもないのでしょうが ―― こういう入り方も良いものです。

It may not be "Her father's bloodline that got me into anime after the last episode", but it's good to get into it this way.

-----

これまでも述べてきたように、私は、「エヴァンゲリオン」にハマることのできなかった一人です。

As I have mentioned, I am one of those people who could never get into "Evangelion".

ハマれない人と、ハマれない人のどちらが不幸か、と言われれば、言うまでもなく後者です。

If you ask me who is more unhappy, those who can't get into it or those who can't get into it, it goes without saying that it is the latter.

ですから、これからは、家族の中に「解説者」ができることで、私も興味を持てるようになるかもしれないなー、などと、と思っていたところ ――

So I was thinking that from now on, I might be able to have a "commentator" in the family, so that I can be interested in it, and so on.

驚愕の記事を見つけました。

I found the article astonishing.

======

今回は、絶賛公開中の「シンエヴァンゲリオン劇場版」で、ユーミンの唄うこの映画の挿入歌「VOYAGER~日付のない墓標」が使用されたことで突如、注目を浴びた1984(昭和59)年公開のSF映画「さよならジュピター」をご紹介します。

This time, I'd like to introduce you to the science fiction movie "Sayonara Jupiter," released in 1984 (Showa 59), which suddenly drew attention when the movie's insert song "VOYAGER - Tombstone without a Date" sung by Eumin was used in "Shin Evangelion the Movie," which is currently being released to rave reviews.

=====

なん・・だと・・

What the...?

「VOYAGER~日付のない墓標」だと。

You said "VOYAGER - Tombstone Without a Date" didn't you?

22世紀のエンジニアを描いたSF最高峰の「小説 さよならジュピター」

"Novel Goodbye Jupiter", the best science fiction about an engineer in the 22nd century

その原作を台無しにしてしまった「映画 さよならジュピター」

The movie "Goodbye Jupiter" ruined the original story.

そして、その映画の中で誕生した、「名曲 VOYAGER~日付のない墓標」が「シンエヴァンゲリオン劇場版」で使われいる・・だと。

The song "VOYAGER - Tombstone without a Date" was created in the movie and is used in Shin Evangelion the Movie.

-----

「さよならジュピター」に関わるものであれば、それがなんであれ、全て私のフィールドです。

Anything related to "Goodbye Jupiter" is my field.

1995年の地上波の「ヤシマ作戦」と「MAGIシステム乗っ取り」で止まっていた私の中で、今、何かが動き始めました。

Something has now started to move in me, which had stopped with the 1995 terrestrial "Operation Yakima" and the "MAGI system takeover".

2021/03,江端さんの技術メモ

http://mstc.or.jp/faop/committee/11b4d681d4059ef7fed08409b8b34e1f2c1c4029.PDF

nxdlink_lua

--[[ Wireshark用 NX/Dlinkプロトコル解析プログラム 
 	       			      	ver0.03	  2012年2月16日
 	       			      	ver0.02	  2012年2月10日
 	       			      	ver0.01	  2012年2月1日

						  江端智一
使用条件 
 	    絶対的な意味において無保証
 
History
   Ver 0.03	重複登録を一応回避

   Ver 0.02	TCP/UDPデータに"NUXM"があったら、送信ポート番号を調べて
       		動的にDissectorをWiresharkに登録するようにした

   Ver 0.01	とりあえず動作確認のみ
		udpポート番号が特定の値に固定されている
		フィールドの位置がズレている可能性あり

使い方
 (Step.1)	c:/Program Files/Wireshark/init.lua の一部を書き換え
   		
	(a)	disable_lua = true; do return end; 
 			     ↓ 
		-- disable_lua = true; do return end; 

	(b)	run_user_scripts_when_superuser = false
  			     ↓ 
		run_user_scripts_when_superuser = true

	(c)	最終行に 以下の一行を追加
		"init.lua"と同じディレクトリに置く
		dofile("nxdlink.lua")

 (Step.2)	このファイルを c:/Program Files/Wireshark/ に
 		"nxdlink.lua"という名前で保存
]]

do
    nxdlink_proto = Proto("NXDlink", "nxdlink protocol dissector")


    nxdlink_proto.dissector = function(buffer, pinfo, tree)

       -- nexus header type : "NUXM"
       local    hd_h_type_range = buffer(0,4)
       local    hd_h_type = hd_h_type_range:string()

       -- message length ( 16K + 64 )
       local 	hd_ml_range = buffer(4,4)
       local    hd_ml = hd_ml_range:uint()

       -- source protocol address
       local	hd_sa_range = buffer(8,4)
       local	hd_sa = hd_sa_range:uint()

       -- destination address	
       local 	hd_da_range = buffer(12,4)
       local 	hd_da = hd_da_range:uint()

       -- boot time stamp
       local 	hd_v_seq_range = buffer(16,4)
       local 	hd_v_seq = hd_v_seq_range:uint()

       -- message number
       local    hd_seq_range = buffer(20,4)
       local    hd_seq = hd_seq_range:uint()
		
       --[[ /* message control type		*/
         			/* UDP_MSG : multicast send	*/
				/* UDP_INQ : multicast inquire	*/
				/* UDP_NIQ : multicast Ninquire	*/
				/* TCP_MSG : peer send		*/
				/* TCP_INQ : peer inquire	*/
				/* TCP_RPL : peer reply		*/]]

       local	hd_m_ctl_range = buffer(24,4)
       local	hd_m_ctl = hd_m_ctl_range:uint()

       local    control_type  = { 
            [0x80000000] = "UDP_MSG(0x80000000) : multicast send", 
            [0xa0000000] = "UDP_INQ(0xa0000000) : multicast inquire",
	    [0x88000000] = "UDP_NIQ(0x88000000) : multicast Ninquire",
	    [0x40000000] = "TCP_MSG(0x40000000) : peer send",
	    [0x60000000] = "TCP_INQ(0x60000000) : peer inquire",
	    [0x50000000] = "TCP_RPL(0x50000000) : peer reply",
       }

       -- /* inquire ID parameter		*/
       
	-- /* inquire source address	 */
       local	inq_id_range = buffer(28,12)

	-- /* transaction code		*/
       local 	hd_tcd_range = buffer(40,2)
       local 	hd_tcd = hd_tcd_range:uint()

       -- /* program version number	*/
       local    hd_ver_range = buffer(42,2)
       local    hd_ver = hd_ver_range:uint()

       -- /* future use			*/
       local 	hd_fu0_range = buffer(44,3)
       local 	hd_fu0 = hd_fu0_range:uint()

       -- /* acknowledge request mode	*/
		--		/* PT_REQ : request message	*/
		--		/* PT_ACK : response message	*/
       local    hd_pkind_range = buffer(47,1)
       local    hd_pkind = hd_pkind_range:uint()

       -- /* packet seqence number	*/
       local    hd_pseq_range = buffer(48,4)
       local    hd_pseq = hd_pseq_range:uint()

       -- /* message mode			*/
		--		/* HEAD_ONLINE : online mode	*/
		--		/* HEAD_TEST   : test   mode	*/
       local 	hd_mode_range = buffer(52,2)
       local 	hd_mode = hd_mode_range:uint()

       -- /* protocol version number	*/
	-- /* NEXUS_DLINK : NeXUS/Dlink	*/
	-- /* NEXUS_T     : NeXUS/T	*/
       local    hd_pver_range = buffer(54,1)
       local    hd_pver = hd_pver_range:uint()

       -- /* message service level	*/
       local    hd_pri_range = buffer(55,1)
       local    hd_pri = hd_pri_range:uint()

       -- /* current block number		*/
       local    hd_cbn_range = buffer(56,1)
       local    hd_cbn = hd_cbn_range:uint()

       -- /* total block number		*/
       local    hd_tbn_range = buffer(57,1)
       local    hd_tbn = hd_tbn_range:uint()

       -- /* segmenting block size	*/
       local    hd_bsize_range = buffer(58,2)
       local    hd_bsize = hd_bsize_range:uint()

       -- /* future use			*/
       local 	hd_fu1_range = buffer(60,4)
       local    hd_fu1 = hd_fu1_range:uint()

       -- data
       local	data_range = buffer(64)
       local	data = data_range:string()
        
       local subtree = tree:add("NX Dlink Protocol")


       -- nexus header type : "NUXM"
       subtree:add(hd_h_type_range, "Type:",hd_h_type)

       -- message length ( 16K + 64 )
       subtree:add(hd_ml_range, "Length:",hd_ml)

       -- source protocol address
       dispatch_addr("source protocol address:",hd_sa_range, pinfo, subtree)

       -- /* destination address		*/
       dispatch_addr("destination address:",hd_da_range, pinfo, subtree)

       -- /* boot time stamp		*/
       subtree:add(hd_v_seq_range, "boot time stamp:",hd_v_seq)

       -- /* message number		*/
       subtree:add(hd_seq_range,"message number:",hd_seq)

       -- /* message control type		*/

       dispatch_cnttype(string.format("message control type: %s",control_type[hd_m_ctl]), hd_m_ctl_range, pinfo, subtree)

	-- /* inquire ID parameter */
       dispatch_inq("inquire ID parameter:",inq_id_range, pinfo, subtree)

	-- /* transaction code		*/
       subtree:add(hd_tcd_range, "transaction code:",hd_tcd)

       -- /* program version number	*/
       subtree:add(hd_ver_range, "program version number:",hd_ver)

       -- /* future use			*/
       subtree:add(hd_fu0_range, "future use:",hd_fu0)

       -- /* acknowledge request mode	*/
       subtree:add(hd_pkind_range, "acknowledge request mode:",hd_pkind)

       -- /* packet seqence number	*/
       subtree:add(hd_pseq_range, "packet seqence number:",hd_pseq)

       -- /* message mode			*/
       subtree:add(hd_mode_range, "message mode(1:online 0:test) :",hd_mode)

       -- /* protocol version number	*/
       subtree:add(hd_pver_range, "NX protocol version number:",hd_pver)

       -- /* message service level	*/
       subtree:add(hd_pri_range, "message service level:",hd_pri)

       -- /* current block number		*/
       subtree:add(hd_cbn_range, "current block number:",hd_cbn)

       -- /* total block number		*/
       subtree:add(hd_tbn_range, "total block number:",hd_tbn)

       -- /* segmenting block size	*/
       subtree:add(hd_bsize_range, "segmenting block size:",hd_bsize)

       -- /* future use			*/
       subtree:add(hd_fu1_range, "future use:",hd_fu1)

       -- data
       subtree:add(data_range, "data:",data)
--       dispatch_inq("Data:",data_range, pinfo, subtree)	 

        pinfo.cols.protocol = "NX/Dlink"
        pinfo.cols.info = control_type[hd_m_ctl]
    end

   -- リスナーを定義
   function init_listener()

       u = {} 
       t = {} 

       u_cnt = 1;
       t_cnt = 1;

       u_bool = true
       t_bool = true

       -- UDP/TCPデータの中に"NUXM"があったらフックする	    
       tap = Listener.new("frame", "udp contains NUXM or tcp contains NUXM")   


        function tap.reset()
            print("passed tap.reset")
            u_cnt = 0;
            t_cnt = 0;
        end

       -- Dissector を Wireshark に追加登録
       -- 重複登録問題を(不細工だけけど)以下で対応
       function tap.packet(pinfo,tvb,ip)
       	   -- UDPの場合	
           if ( pinfo.ipproto == 17 ) then

 	       u_flag = 1
 
	       for i=0, u_cnt do 
	           if u[i] == pinfo.dst_port then 
	               u_flag = 0 
  	           end
	       end
	   
	       if u_flag == 1 then 
  	           u_cnt = u_cnt + 1
	           u[u_cnt] = pinfo.dst_port
	           udp_table = DissectorTable.get("udp.port")
	           udp_table:add(pinfo.dst_port, nxdlink_proto)
               end

	   -- TCPの場合  (まだ実験前)
	   elseif ( pinfo.ipproto == 6 ) then

 	       t_flag = 1

	       for i=0, t_cnt do 
	           if u[i] == pinfo.dst_port then 
	               c_flag = 0 
  	           end
	       end

	       if t_flag == 1 then 
  	           t_cnt = t_cnt + 1
	           t[t_cnt] = pinfo.dst_port
  	           tcp_table = DissectorTable.get("tcp.port")
	           tcp_table:add(pinfo.dst_port, nxdlink_proto)
               end
           end
       end
   end

   init_listener()

end

function dispatch_cnttype(string, buffer, pinfo, subtree)
   local subsubtree = subtree:add(buffer(0), string, buffer(0):tvb())	

    subsubtree:add(buffer(0,1),string.format("%d... .... .... .... .... .... .... .... = multicast flag",buffer(0,1):bitfield(0)))
    subsubtree:add(buffer(0,1),string.format(".%d.. .... .... .... .... .... .... .... = unicast flag",buffer(0,1):bitfield(1)))
    subsubtree:add(buffer(0,1),string.format("..%d. .... .... .... .... .... .... .... = inquire flag",buffer(0,1):bitfield(2)))
    subsubtree:add(buffer(0,1),string.format("...%d .... .... .... .... .... .... .... = reply flag",buffer(0,1):bitfield(3)))
    subsubtree:add(buffer(3,1),string.format(".... .... .... .... .... .... .... .%d.. = ack flag(future use)",buffer(3,1):bitfield(5)))
    subsubtree:add(buffer(3,1),string.format(".... .... .... .... .... .... .... ...%d = ack flag(future use)",buffer(3,1):bitfield(7)))

end


function dispatch_udp_port(string, buffer, pinfo, subtree)
    local subsubtree = subtree:add(buffer(0), string, buffer(0):tvb())	

    subsubtree:add(buffer(0,2),"source port:", buffer(0,2):uint())
    subsubtree:add(buffer(2,2),"destination port:", buffer(2,2):uint())
end

function dispatch_addr(string, buffer, pinfo, subtree)
    local subsubtree = subtree:add(buffer(0), string, buffer(0):tvb())	

    subsubtree:add(buffer(0,1),"Domain Number:", buffer(0,1):uint())
    subsubtree:add(buffer(1,1),"Data Field Number:", buffer(1,1):uint())
    subsubtree:add(buffer(2,2),"Node Number/Multicast Group Number:", buffer(2,2):uint())
end

function dispatch_inq(string, buffer, pinfo, subtree)
    local subsubtree = subtree:add(buffer(0), string, buffer(0):tvb())	
    
    subsubtree:add(buffer(0,2), "inquire source address:",buffer(0,2):uint())
    subsubtree:add(buffer(2,2), "inquire control block address:",buffer(2,2):uint())
    subsubtree:add(buffer(4,2), "inquire ID sequence number:",buffer(4,2):uint())
end