packet can contain multiple datasets of same type
This commit is contained in:
		
							parent
							
								
									ed87648312
								
							
						
					
					
						commit
						73df3e0528
					
				
					 5 changed files with 15 additions and 13 deletions
				
			
		
							
								
								
									
										12
									
								
								src/Lookup.h
									
										
									
									
									
								
							
							
						
						
									
										12
									
								
								src/Lookup.h
									
										
									
									
									
								
							|  | @ -16,12 +16,14 @@ static table rcv_lookup = { { 1, table::STRING, "type" }, //string | |||
| 		{ 7, table::STRING, "firmware_version" }, | ||||
| 		{ 8, table::STRING, "hardware_version" }, | ||||
| 		{ 9, table::DEC, "dhcp" }, //bool byte
 | ||||
| 		{ 19, table::DEC, "ports" }, //byte, maybe number of ports
 | ||||
| 		{ 10, table::DEC, "ports???" }, //byte, maybe number of ports
 | ||||
| 		{ 4352, table::HEX, "igmp_snooping" }, //switching
 | ||||
| 		{ 4096, table::HEX, "port_settings" }, //switching
 | ||||
| 		{ 4608, table::HEX, "port_trunk" }, //byte[5] last byte bitmask??
 | ||||
| 		{ 8704, table::HEX, "802.1q vlan" }, //???
 | ||||
| 
 | ||||
| 		{ 8192, table::HEX, "mtu_vlan" }, //byte[2] first byte bool,second byte port id
 | ||||
| 		{ 8704, table::HEX, "802.1q vlan enabled" }, //bool byte
 | ||||
| 		{ 8705, table::HEX, "802.1q vlan" }, //one set per vlan
 | ||||
| 		{ 8706, table::HEX, "802.1q vlan pvid" }, //????
 | ||||
| 		{ 12288, table::HEX, "QoS Basic 1" }, //bool = QoS Mod
 | ||||
| 		{ 12289, table::HEX, "QoS Basic 2" }, //QoS
 | ||||
| 		{ 16640, table::HEX, "port_mirror" }, //byte[10] second byte port id??
 | ||||
|  | @ -35,7 +37,7 @@ static table snd_lookup = { | |||
| // TODO find out if id is unique in response
 | ||||
| 		{ 2, table::HEX, "system_info" }, //page sysinfo
 | ||||
| 		{ 9, table::HEX, "ip_config" }, //page sysinfo
 | ||||
| 		{ 10, table::HEX, "??? - 10" }, //after login
 | ||||
| 		{ 10, table::HEX, "ports???" }, //after login
 | ||||
| 		{ 512, table::STRING, "login_user" }, //string
 | ||||
| 		{ 513, table::STRING, "new_user" }, //string
 | ||||
| 		{ 514, table::STRING, "login_password" }, //string
 | ||||
|  | @ -50,7 +52,7 @@ static table snd_lookup = { | |||
| 		{ 8192, table::HEX, "mtu_vlan" }, //byte[2] first byte bool,	second byte port id
 | ||||
| 		{ 8449, table::HEX, "port_vlan1" }, //???
 | ||||
| 		{ 8448, table::HEX, "port_vlan2" }, //open page
 | ||||
| 		{ 8704, table::HEX, "802.1q vlan" }, //??? get vlan / set status
 | ||||
| 		{ 8704, table::HEX, "802.1q vlan enabled" }, //??? get vlan / set status
 | ||||
| 		{ 8705, table::HEX, "802.1q vlan" }, //???
 | ||||
| 		{ 8706, table::HEX, "802.1q vlan pvid" }, //????
 | ||||
| 
 | ||||
|  |  | |||
|  | @ -33,7 +33,7 @@ void Packet::printHeader() { | |||
| bytes Packet::getBytes() { | ||||
| 	int i = 0; | ||||
| 	for (auto d : payload) | ||||
| 		push(body, i, d.second); | ||||
| 		push(body, i, d); | ||||
| 	push(body, i, (int) PACKET_END); | ||||
| 	i = 0; | ||||
| 	push(head, i, version); | ||||
|  | @ -79,7 +79,7 @@ void Packet::parse(bytes data) { | |||
| 		pull(body, i, d.type); | ||||
| 		pull(body, i, d.len); | ||||
| 		pull(body, i, d.value, d.len); | ||||
| 		payload = d; | ||||
| 		payload.push_back(d); | ||||
| 	} | ||||
| } | ||||
| 
 | ||||
|  |  | |||
|  | @ -32,8 +32,7 @@ int printPacket(Packet p) { | |||
| 	if (options.flags & FLAG_HEX) { | ||||
| 		std::cout << "Received Payload:\n\t" << p.getBody() << "\n"; | ||||
| 	} else { | ||||
| 		for (auto a : p.getPayload()) { | ||||
| 			dataset d = a.second; | ||||
| 		for (dataset d : p.getPayload()) { | ||||
| 			auto lookup = | ||||
| 					(options.flags & FLAG_REVERSE) ? snd_lookup : rcv_lookup; | ||||
| 			if (lookup.exists(d.type)) { | ||||
|  |  | |||
|  | @ -13,8 +13,8 @@ | |||
| #include "Options.h" | ||||
| 
 | ||||
| int Switch::parse(datasets arr) { | ||||
| 	for (auto a : arr) { | ||||
| 		parse(a.second); | ||||
| 	for (dataset a : arr) { | ||||
| 		parse(a); | ||||
| 	} | ||||
| 	return 0; | ||||
| } | ||||
|  |  | |||
|  | @ -17,13 +17,14 @@ struct dataset { | |||
| 	bytes value; | ||||
| }; | ||||
| 
 | ||||
| class datasets : public std::map<short, dataset> { | ||||
| class datasets : public std::vector<dataset> { | ||||
| public: | ||||
| 	datasets(){}; | ||||
| 	datasets(std::initializer_list<dataset> s) | ||||
| 	{ | ||||
| 		for (dataset b : s) { | ||||
| 			(*this)[b.type]=b; | ||||
| 			//(*this)[b.type]=b;
 | ||||
| 			push_back(b); | ||||
| 		} | ||||
|     } | ||||
| }; | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue