X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;f=src%2Fplugins%2Fdhcp%2Fclient.h;h=2855dcecd1e2b1b26fce28f0f53242a48f781508;hb=c54162981cdd41d65ed283df36955007552ddffe;hp=68176abadf662cf1b542691367fb417b96a0a135;hpb=02bfd641b69aab83397e217b9ca4e35a6aab05c8;p=vpp.git diff --git a/src/plugins/dhcp/client.h b/src/plugins/dhcp/client.h index 68176abadf6..2855dcecd1e 100644 --- a/src/plugins/dhcp/client.h +++ b/src/plugins/dhcp/client.h @@ -42,6 +42,24 @@ struct dhcp_client_t_; typedef void (*dhcp_event_cb_t) (u32 client_index, const struct dhcp_client_t_ * client); +/** + * The set of addresses/mask that contribute forwarding info + * and are installed. + */ +typedef struct dhcp_client_fwd_addresses_t_ +{ + /** the address assigned to this client and it's mask */ + ip4_address_t leased_address; + u32 subnet_mask_width; + + /** the address of the DHCP server handing out the address. + this is used to send any unicast messages */ + ip4_address_t dhcp_server; + + /** The address of this client's default gateway - may not be present */ + ip4_address_t router_address; +} dhcp_client_fwd_addresses_t; + typedef struct dhcp_client_t_ { dhcp_client_state_t state; @@ -59,11 +77,16 @@ typedef struct dhcp_client_t_ /* DHCP transaction ID, a random number */ u32 transaction_id; - /* leased address, other learned info DHCP */ - ip4_address_t leased_address; /* from your_ip_address field */ - ip4_address_t dhcp_server; - u32 subnet_mask_width; /* option 1 */ - ip4_address_t router_address; /* option 3 */ + /** + * leased address, other learned info DHCP + * the learned set is updated by new messages recieved in the DP + * the installed set is what's actually been added + */ + dhcp_client_fwd_addresses_t learned; + dhcp_client_fwd_addresses_t installed; + /* have local Addresses and default route been installed */ + u8 addresses_installed; + ip4_address_t *domain_server_address; /* option 6 */ u32 lease_renewal_interval; /* option 51 */ u32 lease_lifetime; /* option 59 */ @@ -85,8 +108,6 @@ typedef struct dhcp_client_t_ u8 client_hardware_address[6]; u8 client_detect_feature_enabled; - /* the unicast adjacency for the DHCP server */ - adj_index_t ai_ucast; /* the broadcast adjacency on the link */ adj_index_t ai_bcast; /* IP DSCP to set in sent packets */ @@ -102,6 +123,9 @@ typedef struct uword *client_by_sw_if_index; u32 seed; + /* ip4-lookup node index */ + u32 ip4_lookup_node_index; + /* convenience */ vlib_main_t *vlib_main; vnet_main_t *vnet_main;