lib: do not parse packet right away but do rather for every getter

Vice versa for setters.
Also store pointer to opts area and use type_infos to set that pointer
correctly.

Signed-off-by: Jiri Pirko <jiri@resnulli.us>
lib: move "struct icmp6_hdr *" into msg struct and init it in alloc

Signed-off-by: Jiri Pirko <jiri@resnulli.us>
lib: introduce ndp_get_type_by_raw_type() and use it to find out msg type

Signed-off-by: Jiri Pirko <jiri@resnulli.us>
lib: fix memory leak on receiving small packets

Signed-off-by: Jiri Pirko <jiri@resnulli.us>
lib: introduce ndp_msg_type_info() helper

Signed-off-by: Jiri Pirko <jiri@resnulli.us>
lib: move len check into ndp_sock_recv

Signed-off-by: Jiri Pirko <jiri@resnulli.us>
lib: get rid of ndp_process_* functions

Signed-off-by: Jiri Pirko <jiri@resnulli.us>
lib: remove msg->type and rather use in header value

Signed-off-by: Jiri Pirko <jiri@resnulli.us>
lib: setup first pointer in all type-specific structures at once

Signed-off-by: Jiri Pirko <jiri@resnulli.us>
lib: use in6_addr instead od sockaddr_in6 in function params

Signed-off-by: Jiri Pirko <jiri@resnulli.us>
lib: pass on flags in recvfrom

Signed-off-by: Jiri Pirko <jiri@resnulli.us>
lib: remove local ifindex variable in ndp_sock_recv

Signed-off-by: Jiri Pirko <jiri@resnulli.us>
lib: add support for sending ND messages

Signed-off-by: Jiri Pirko <jiri@resnulli.us>
lib: add msg ifindex setter

Signed-off-by: Jiri Pirko <jiri@resnulli.us>
lib: add forgotten p_msg assign in ndp_msg_new

Signed-off-by: Jiri Pirko <jiri@resnulli.us>
lib: adjust destination address before send for certain ND types

Signed-off-by: Jiri Pirko <jiri@resnulli.us>
lib: init msg->len accorsding to ND type during init and introduce maxlen getter

Signed-off-by: Jiri Pirko <jiri@resnulli.us>
ndptool: add support for sending messages

Signed-off-by: Jiri Pirko <jiri@resnulli.us>