vorfeed
Member
Hi,
I've been writing a C program on OpenVMS AXP, to communicate with SoftLogix/1789-SIM module using CIP over Ethernet/IP. In order to do so, I ported the TuxEIP library to VMS. It works for reading tags, but when I try to write tags, I get back a status of 0x6a & header length of 0. The same TuxEIP code (and as far as I can tell, the same data over the wire) works fine on Linux; I'm not sure why it won't work on VMS. Please help if you can.
Here's the request, captured by ethereal; it should write a value of 2 to the tag "int".
Frame 95 (113 bytes on wire, 113 bytes captured)
Arrival Time: Jul 2, 2008 18:35:55.320729000
Time delta from previous packet: 0.622051000 seconds
Time since reference or first frame: 35.606019000 seconds
Frame Number: 95
Packet Length: 113 bytes
Capture Length: 113 bytes
Ethernet II, Src: aa:00:04:00:e8:2b, Dst: 00:04:23:07:e1:3a
Destination: 00:04:23:07:e1:3a (192.168.1.226)
Source: aa:00:04:00:e8:2b (192.168.1.17)
Type: IP (0x0800)
Internet Protocol, Src Addr: 192.168.1.17 (192.168.1.17), Dst Addr: 192.168.1.226 (192.168.1.226)
Version: 4
Header length: 20 bytes
Differentiated Services Field: 0x00 (DSCP 0x00: Default; ECN: 0x00)
0000 00.. = Differentiated Services Codepoint: Default (0x00)
.... ..0. = ECN-Capable Transport (ECT): 0
.... ...0 = ECN-CE: 0
Total Length: 99
Identification: 0x0fc2 (4034)
Flags: 0x04 (Don't Fragment)
0... = Reserved bit: Not set
.1.. = Don't fragment: Set
..0. = More fragments: Not set
Fragment offset: 0
Time to live: 60
Protocol: TCP (0x06)
Header checksum: 0xaa8f (correct)
Source: 192.168.1.17 (192.168.1.17)
Destination: 192.168.1.226 (192.168.1.226)
Transmission Control Protocol, Src Port: 1578 (1578), Dst Port: 44818 (44818), Seq: 173, Ack: 152, Len: 59
Source port: 1578 (1578)
Destination port: 44818 (44818)
Sequence number: 173 (relative sequence number)
Next sequence number: 232 (relative sequence number)
Acknowledgement number: 152 (relative ack number)
Header length: 20 bytes
Flags: 0x0018 (PSH, ACK)
0... .... = Congestion Window Reduced (CWR): Not set
.0.. .... = ECN-Echo: Not set
..0. .... = Urgent: Not set
...1 .... = Acknowledgment: Set
.... 1... = Push: Set
.... .0.. = Reset: Not set
.... ..0. = Syn: Not set
.... ...0 = Fin: Not set
Window size: 33580
Checksum: 0x4966 (correct)
EtherNet/IP (Industrial Protocol), Session: 0x30020002, Send Unit Data
Encapsulation Header
Command: Send Unit Data (0x0070)
Length: 35
Session Handle: 0x30020002
Status: Success (0x00000000)
Sender Context: 0000000000000000
Options: 0x00000000
Command Specific Data
Interface Handle: CIP (0x00000000)
Timeout: 1
Item Count: 2
Type ID: Connected Address Item (0x00a1)
Length: 4
Connection Identifier: 0x00002501
Type ID: Connected Data Item (0x00b1)
Length: 15
Sequence Count: 0x0002
Common Industrial Protocol
Service: Unknown Service (4d) (Request)
0... .... = Request/Response: Request (0x00)
.100 1101 = Service: Unknown (0x4d)
Request Path Size: 3 (words)
Request Path: int
Extended Symbol Segment (0x91)
Data Size: 3
Data: int
Pad Byte (0x00)
Command Specific Data
Data: C200010002
0000 00 04 23 07 e1 3a aa 00 04 00 e8 2b 08 00 45 00 ..#..:.....+..E.
0010 00 63 0f c2 40 00 3c 06 aa 8f c0 a8 01 11 c0 a8 .c..@.<.........
0020 01 e2 06 2a af 12 5f 21 d1 76 a9 0f 4d 09 50 18 ...*.._!.v..M.P.
0030 83 2c 49 66 00 00 70 00 23 00 02 00 02 30 00 00 .,If..p.#....0..
0040 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0050 00 00 01 00 02 00 a1 00 04 00 01 25 00 00 b1 00 ...........%....
0060 0f 00 02 00 4d 03 91 03 69 6e 74 00 c2 00 01 00 ....M...int.....
0070 02
And the response from SoftLogix:
Frame 96 (78 bytes on wire, 78 bytes captured)
Arrival Time: Jul 2, 2008 18:35:55.321046000
Time delta from previous packet: 0.000317000 seconds
Time since reference or first frame: 35.606336000 seconds
Frame Number: 96
Packet Length: 78 bytes
Capture Length: 78 bytes
Ethernet II, Src: 00:04:23:07:e1:3a, Dst: aa:00:04:00:e8:2b
Destination: aa:00:04:00:e8:2b (192.168.1.17)
Source: 00:04:23:07:e1:3a (192.168.1.226)
Type: IP (0x0800)
Internet Protocol, Src Addr: 192.168.1.226 (192.168.1.226), Dst Addr: 192.168.1.17 (192.168.1.17)
Version: 4
Header length: 20 bytes
Differentiated Services Field: 0x00 (DSCP 0x00: Default; ECN: 0x00)
0000 00.. = Differentiated Services Codepoint: Default (0x00)
.... ..0. = ECN-Capable Transport (ECT): 0
.... ...0 = ECN-CE: 0
Total Length: 64
Identification: 0x2663 (9827)
Flags: 0x04 (Don't Fragment)
0... = Reserved bit: Not set
.1.. = Don't fragment: Set
..0. = More fragments: Not set
Fragment offset: 0
Time to live: 128
Protocol: TCP (0x06)
Header checksum: 0x5011 (correct)
Source: 192.168.1.226 (192.168.1.226)
Destination: 192.168.1.17 (192.168.1.17)
Transmission Control Protocol, Src Port: 44818 (44818), Dst Port: 1578 (1578), Seq: 152, Ack: 232, Len: 24
Source port: 44818 (44818)
Destination port: 1578 (1578)
Sequence number: 152 (relative sequence number)
Next sequence number: 176 (relative sequence number)
Acknowledgement number: 232 (relative ack number)
Header length: 20 bytes
Flags: 0x0018 (PSH, ACK)
0... .... = Congestion Window Reduced (CWR): Not set
.0.. .... = ECN-Echo: Not set
..0. .... = Urgent: Not set
...1 .... = Acknowledgment: Set
.... 1... = Push: Set
.... .0.. = Reset: Not set
.... ..0. = Syn: Not set
.... ...0 = Fin: Not set
Window size: 17289
Checksum: 0x2d8e (correct)
SEQ/ACK analysis
This is an ACK to the segment in frame: 95
The RTT to ACK the segment was: 0.000317000 seconds
EtherNet/IP (Industrial Protocol), Session: 0x30020002, Send Unit Data
Encapsulation Header
Command: Send Unit Data (0x0070)
Length: 0
Session Handle: 0x30020002
Status: Unknown (0x0000006a)
Sender Context: 0000000000000000
Options: 0x00000000
0000 aa 00 04 00 e8 2b 00 04 23 07 e1 3a 08 00 45 00 .....+..#..:..E.
0010 00 40 26 63 40 00 80 06 50 11 c0 a8 01 e2 c0 a8 .@&[email protected].......
0020 01 11 af 12 06 2a a9 0f 4d 09 5f 21 d1 b1 50 18 .....*..M._!..P.
0030 43 89 2d 8e 00 00 70 00 00 00 02 00 02 30 6a 00 C.-...p......0j.
0040 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ..............
They look the same to me... what's going on, here? Can anyone help me figure out what I'm doing wrong? Please help if you can, I'm pretty much stuck. Thanks in advance!
I've been writing a C program on OpenVMS AXP, to communicate with SoftLogix/1789-SIM module using CIP over Ethernet/IP. In order to do so, I ported the TuxEIP library to VMS. It works for reading tags, but when I try to write tags, I get back a status of 0x6a & header length of 0. The same TuxEIP code (and as far as I can tell, the same data over the wire) works fine on Linux; I'm not sure why it won't work on VMS. Please help if you can.
Here's the request, captured by ethereal; it should write a value of 2 to the tag "int".
Frame 95 (113 bytes on wire, 113 bytes captured)
Arrival Time: Jul 2, 2008 18:35:55.320729000
Time delta from previous packet: 0.622051000 seconds
Time since reference or first frame: 35.606019000 seconds
Frame Number: 95
Packet Length: 113 bytes
Capture Length: 113 bytes
Ethernet II, Src: aa:00:04:00:e8:2b, Dst: 00:04:23:07:e1:3a
Destination: 00:04:23:07:e1:3a (192.168.1.226)
Source: aa:00:04:00:e8:2b (192.168.1.17)
Type: IP (0x0800)
Internet Protocol, Src Addr: 192.168.1.17 (192.168.1.17), Dst Addr: 192.168.1.226 (192.168.1.226)
Version: 4
Header length: 20 bytes
Differentiated Services Field: 0x00 (DSCP 0x00: Default; ECN: 0x00)
0000 00.. = Differentiated Services Codepoint: Default (0x00)
.... ..0. = ECN-Capable Transport (ECT): 0
.... ...0 = ECN-CE: 0
Total Length: 99
Identification: 0x0fc2 (4034)
Flags: 0x04 (Don't Fragment)
0... = Reserved bit: Not set
.1.. = Don't fragment: Set
..0. = More fragments: Not set
Fragment offset: 0
Time to live: 60
Protocol: TCP (0x06)
Header checksum: 0xaa8f (correct)
Source: 192.168.1.17 (192.168.1.17)
Destination: 192.168.1.226 (192.168.1.226)
Transmission Control Protocol, Src Port: 1578 (1578), Dst Port: 44818 (44818), Seq: 173, Ack: 152, Len: 59
Source port: 1578 (1578)
Destination port: 44818 (44818)
Sequence number: 173 (relative sequence number)
Next sequence number: 232 (relative sequence number)
Acknowledgement number: 152 (relative ack number)
Header length: 20 bytes
Flags: 0x0018 (PSH, ACK)
0... .... = Congestion Window Reduced (CWR): Not set
.0.. .... = ECN-Echo: Not set
..0. .... = Urgent: Not set
...1 .... = Acknowledgment: Set
.... 1... = Push: Set
.... .0.. = Reset: Not set
.... ..0. = Syn: Not set
.... ...0 = Fin: Not set
Window size: 33580
Checksum: 0x4966 (correct)
EtherNet/IP (Industrial Protocol), Session: 0x30020002, Send Unit Data
Encapsulation Header
Command: Send Unit Data (0x0070)
Length: 35
Session Handle: 0x30020002
Status: Success (0x00000000)
Sender Context: 0000000000000000
Options: 0x00000000
Command Specific Data
Interface Handle: CIP (0x00000000)
Timeout: 1
Item Count: 2
Type ID: Connected Address Item (0x00a1)
Length: 4
Connection Identifier: 0x00002501
Type ID: Connected Data Item (0x00b1)
Length: 15
Sequence Count: 0x0002
Common Industrial Protocol
Service: Unknown Service (4d) (Request)
0... .... = Request/Response: Request (0x00)
.100 1101 = Service: Unknown (0x4d)
Request Path Size: 3 (words)
Request Path: int
Extended Symbol Segment (0x91)
Data Size: 3
Data: int
Pad Byte (0x00)
Command Specific Data
Data: C200010002
0000 00 04 23 07 e1 3a aa 00 04 00 e8 2b 08 00 45 00 ..#..:.....+..E.
0010 00 63 0f c2 40 00 3c 06 aa 8f c0 a8 01 11 c0 a8 .c..@.<.........
0020 01 e2 06 2a af 12 5f 21 d1 76 a9 0f 4d 09 50 18 ...*.._!.v..M.P.
0030 83 2c 49 66 00 00 70 00 23 00 02 00 02 30 00 00 .,If..p.#....0..
0040 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0050 00 00 01 00 02 00 a1 00 04 00 01 25 00 00 b1 00 ...........%....
0060 0f 00 02 00 4d 03 91 03 69 6e 74 00 c2 00 01 00 ....M...int.....
0070 02
And the response from SoftLogix:
Frame 96 (78 bytes on wire, 78 bytes captured)
Arrival Time: Jul 2, 2008 18:35:55.321046000
Time delta from previous packet: 0.000317000 seconds
Time since reference or first frame: 35.606336000 seconds
Frame Number: 96
Packet Length: 78 bytes
Capture Length: 78 bytes
Ethernet II, Src: 00:04:23:07:e1:3a, Dst: aa:00:04:00:e8:2b
Destination: aa:00:04:00:e8:2b (192.168.1.17)
Source: 00:04:23:07:e1:3a (192.168.1.226)
Type: IP (0x0800)
Internet Protocol, Src Addr: 192.168.1.226 (192.168.1.226), Dst Addr: 192.168.1.17 (192.168.1.17)
Version: 4
Header length: 20 bytes
Differentiated Services Field: 0x00 (DSCP 0x00: Default; ECN: 0x00)
0000 00.. = Differentiated Services Codepoint: Default (0x00)
.... ..0. = ECN-Capable Transport (ECT): 0
.... ...0 = ECN-CE: 0
Total Length: 64
Identification: 0x2663 (9827)
Flags: 0x04 (Don't Fragment)
0... = Reserved bit: Not set
.1.. = Don't fragment: Set
..0. = More fragments: Not set
Fragment offset: 0
Time to live: 128
Protocol: TCP (0x06)
Header checksum: 0x5011 (correct)
Source: 192.168.1.226 (192.168.1.226)
Destination: 192.168.1.17 (192.168.1.17)
Transmission Control Protocol, Src Port: 44818 (44818), Dst Port: 1578 (1578), Seq: 152, Ack: 232, Len: 24
Source port: 44818 (44818)
Destination port: 1578 (1578)
Sequence number: 152 (relative sequence number)
Next sequence number: 176 (relative sequence number)
Acknowledgement number: 232 (relative ack number)
Header length: 20 bytes
Flags: 0x0018 (PSH, ACK)
0... .... = Congestion Window Reduced (CWR): Not set
.0.. .... = ECN-Echo: Not set
..0. .... = Urgent: Not set
...1 .... = Acknowledgment: Set
.... 1... = Push: Set
.... .0.. = Reset: Not set
.... ..0. = Syn: Not set
.... ...0 = Fin: Not set
Window size: 17289
Checksum: 0x2d8e (correct)
SEQ/ACK analysis
This is an ACK to the segment in frame: 95
The RTT to ACK the segment was: 0.000317000 seconds
EtherNet/IP (Industrial Protocol), Session: 0x30020002, Send Unit Data
Encapsulation Header
Command: Send Unit Data (0x0070)
Length: 0
Session Handle: 0x30020002
Status: Unknown (0x0000006a)
Sender Context: 0000000000000000
Options: 0x00000000
0000 aa 00 04 00 e8 2b 00 04 23 07 e1 3a 08 00 45 00 .....+..#..:..E.
0010 00 40 26 63 40 00 80 06 50 11 c0 a8 01 e2 c0 a8 .@&[email protected].......
0020 01 11 af 12 06 2a a9 0f 4d 09 5f 21 d1 b1 50 18 .....*..M._!..P.
0030 43 89 2d 8e 00 00 70 00 00 00 02 00 02 30 6a 00 C.-...p......0j.
0040 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ..............
They look the same to me... what's going on, here? Can anyone help me figure out what I'm doing wrong? Please help if you can, I'm pretty much stuck. Thanks in advance!
Last edited: