27#ifndef _NETSIM_PIM_SM_H_
28#define _NETSIM_PIM_SM_H_
35#define time_interval UINT16
36#define Propagation_delay_default 500
37#define t_override_default 2500
40#define PIM_HELLO_PERIOD_DEFAULT 30
41#define PIM_TRIGGERED_HELLO_DELAY_DEFAULT 5
42#define PIM_DR_PRIORITY_DEFAULT 1
43#define PIM_PROPAGATION_DELAY_DEFAULT Propagation_delay_default
44#define PIM_OVERRIDE_INTERVAL_DEFAULT t_override_default
45#define PIM_T_PERIODIC_DEFAULT 60
146#define PIM_STATE_ALLOC() (ptrPIM_STATE)list_alloc(sizeof(PIM_STATE),offsetof(PIM_STATE,ele))
147#define PIM_STATE_NEXT(state) state = (ptrPIM_STATE)LIST_NEXT(state)
148#define PIM_STATE_ADD(l,m) LIST_ADD_LAST((void**)l,m)
178#define PIM_NEIGHBOR_ALLOC() (ptrPIM_NEIGHBOR)list_alloc(sizeof(PIM_NEIGHBOR),offsetof(PIM_NEIGHBOR,ele))
179#define PIM_NEIGHBOR_NEXT(neigh) neigh = (ptrPIM_NEIGHBOR)LIST_NEXT(neigh)
180#define PIM_NEIGHBOR_ADD(l,m) LIST_ADD_LAST((void**)l,m)
198#define PIM_GROUP_ALLOC() (ptrPIM_GROUP)list_alloc(sizeof(PIM_GROUP),offsetof(PIM_GROUP,ele))
199#define PIM_GROUP_NEXT(gr) gr = (ptrPIM_GROUP)LIST_NEXT(gr)
200#define PIM_GROUP_ADD(l,m) LIST_ADD_LAST((void**)l,m)
226#define GET_PIM_VAR(d) ((ptrPIM_VAR)(GET_IP_DEVVAR(d)->pim))
227#define SET_PIM_VAR(d,var) (GET_IP_DEVVAR(d)->pim = (void*)var)
IP_SUBEVENT
Enumeration for ip sub-events.
void pim_add_interface_to_group(NETSIM_ID d, NETSIM_ID i, ptrPIM_GROUP g)
void elect_DR(NETSIM_ID d, NETSIM_ID ifid)
void pim_route_add(NETSIM_ID d, NETSIM_ID i, UINT metric, NETSIM_IPAddress dest)
void pim_add_timeout_event(NETSIM_ID d, double time, IP_SUBEVENT eve, NETSIM_IPAddress groupAddress)
NETSIM_IPAddress pimroute_find_nexthop(NETSIM_ID d, NETSIM_IPAddress dest)
struct stru_pim_state * ptrPIM_STATE
struct stru_pim_neighbor_state PIM_NEIGH_STATE
struct stru_pim_JP_state PIM_JP_STATE
void send_hello_msg(NETSIM_ID d, double time)
struct stru_pim_neighbor * ptrPIM_NEIGHBOR
struct stru_pim_var * ptrPIM_VAR
void print_RPT_Tree(NETSIM_ID rp, ptrPIM_GROUP group)
ptrPIM_GROUP create_group(NETSIM_ID d, NETSIM_IPAddress addr, NETSIM_IPAddress RP)
NETSIM_IPAddress ALL_PIM_ROUTERS_ADDRESS
bool process_pim_hello_packet()
struct stru_pim_group PIM_GROUP
void pim_send_joinprune(NETSIM_ID d, double time, ptrPIM_GROUP group)
ptrPIM_NEIGHBOR find_neighbor(NETSIM_ID d, NETSIM_IPAddress ip)
struct stru_pim_neighbor PIM_NEIGHBOR
ptrPIM_GROUP pim_find_group(NETSIM_ID d, NETSIM_IPAddress addr)
struct stru_pim_neighbor_state * ptrPIM_NEIGH_STATE
struct stru_pim_JP_state * ptrPIM_JP_STATE
void print_pim_sm_log(char *format,...)
ptrPIM_NEIGHBOR create_and_add_neighbor(NETSIM_ID d, NETSIM_ID ifId, NETSIM_IPAddress address)
struct stru_pim_group * ptrPIM_GROUP
struct stru_pim_state PIM_STATE
struct stru_pim_var PIM_VAR
ptrPIM_JP_STATE * jpState_G
NETSIM_IPAddress groupAddress
NETSIM_IPAddress neighborAddr
NETSIM_IPAddress * secondary_address_list
bool lan_prune_delay_present
NETSIM_ID incomingInterface
UINT secondary_address_count
NETSIM_IPAddress DRIPaddress
NETSIM_IPAddress assertWinner
struct stru_pim_state::stru_DR_state DR_STATE
ptrPIM_NEIGH_STATE * neighState
double effProppagationDelay
NETSIM_IPAddress groupAddress
NETSIM_IPAddress sourceAddress
double effOverrideInterval
double triggeredHelloDelay
ptrPIM_NEIGHBOR neighborList