{
struct eigrp_neighbor *nbr;
struct TLV_IPv4_Internal_type *tlv;
+ struct prefix_ipv4 dest_addr;
u_int16_t type;
+ u_int16_t length;
/* increment statistics. */
ei->query_in++;
while (s->endp > s->getp) {
type = stream_getw(s);
- if (type == EIGRP_TLV_IPv4_INT) {
- struct prefix_ipv4 dest_addr;
-
+ switch (type) {
+ case EIGRP_TLV_IPv4_INT:
stream_set_getp(s, s->getp - sizeof(u_int16_t));
tlv = eigrp_read_ipv4_tlv(s);
eigrp_fsm_event(msg, event);
}
eigrp_IPv4_InternalTLV_free(tlv);
+ break;
+
+ case EIGRP_TLV_IPv4_EXT:
+ /* DVS: processing of external routes needs packet and fsm work.
+ * for now, lets just not creash the box
+ */
+ default:
+ length = stream_getw(s);
+ // -2 for type, -2 for len
+ for (length-=4; length ; length--) {
+ (void)stream_getc(s);
+ }
}
}
eigrp_hello_send_ack(nbr);
struct eigrp_neighbor_entry *ne;
u_int32_t flags;
u_int16_t type;
+ u_int16_t length;
u_char same;
struct access_list *alist;
struct prefix_list *plist;
+ struct prefix_ipv4 dest_addr;
struct eigrp *e;
u_char graceful_restart;
u_char graceful_restart_final;
/*If there is topology information*/
while (s->endp > s->getp) {
type = stream_getw(s);
- if (type == EIGRP_TLV_IPv4_INT) {
- struct prefix_ipv4 dest_addr;
-
+ switch (type) {
+ case EIGRP_TLV_IPv4_INT:
stream_set_getp(s, s->getp - sizeof(u_int16_t));
tlv = eigrp_read_ipv4_tlv(s);
pe);
}
eigrp_IPv4_InternalTLV_free(tlv);
+ break;
+
+ case EIGRP_TLV_IPv4_EXT:
+ /* DVS: processing of external routes needs packet and fsm work.
+ * for now, lets just not creash the box
+ */
+ default:
+ length = stream_getw(s);
+ // -2 for type, -2 for len
+ for (length-=4; length ; length--) {
+ (void)stream_getc(s);
+ }
}
}