ctypes用のネットワーク関係の構造体

2013-08-23 追記

C言語で書いた普通のものはこちらをどうぞ。

イーサネット関係のヘッダ

PyPyCapの作成途中で作ったんだけど、結局使わなかったやつ。 元々は構造体にキャストしてパースする予定だったんだけど、途中から添字直打ちに変更しちゃったのよねー。

このまま捨てるのもくやしいので、役立ててくれどこかの誰かっ

class st_ether_header(BigEndianStructure):
	_fields_ = [
		('ether_dhost', c_uint8 * 6),
		('ether_shost', c_uint8 * 6),
		('ether_type', c_ushort),
	]

class st_ip_header(BigEndianStructure):
	_fields_ = [
		('ihl_and_version', c_uint8),
		('tos', c_uint8),
		('tot_len', c_uint16),
		('id', c_uint16),
		('frag_off', c_uint16),
		('ttl', c_uint8),
		('protocol', c_uint8),
		('check', c_uint16),
		('saddr', c_uint32),
		('daddr', c_uint32),
	]

class st_tcp_header(BigEndianStructure):
	_fields_ = [
		('source', c_uint16),
		('dest', c_uint16),
		('seq', c_uint32),
		('ack_seq', c_uint32),
		('flags', c_uint16),
		('windows', c_uint16),
		('check', c_uint16),
		('urg_ptr', c_uint16),
	]

class st_udp_header(BigEndianStructure):
	_fields_ = [
		('source', c_uint16),
		('dest', c_uint16),
		('len', c_uint16),
		('check', c_uint16)
	]