ICMP has indeed complex implementation since it is a protocol with many features, you might want to look at IGMP and GRE which both have simpler implementations.
By "sending the payload of DCP", what do you mean? Does DCP has a header and a payload or do you mean just the entire DCP data?
The Option/Options classes are generic and used both for IPv4 and for TCP.
Both IPv4 and TCP have their own Options classes which contain all the different option objects.
Each option is registered using OptionTypeRegistration attribute, which registers it to a specific Option type and option type value.
For each Options class, a dictionary between the option types and the Option classes is created. The Option classes are used as templates to create new Option objects according to the specific data.
I don't know DCP Options but unless they have very similar format, using the generic Options classes won't work since there a lot of assumptions on the Option format.