PF: Interface abstraction why abstract at all? /* simplified! */ struct ifnet { /* and the entries */ char if_xname[IFNAMSIZ]; /* external name (name + unit) */ u_short if_index; /* numeric abbreviation for this if */ short if_timer; /* time 'til if_watchdog called */ short if_flags; /* up/down, broadcast, etc. */ struct if_data if_data; /* stats and other data about if */ int if_capabilities; /* interface capabilities */ char if_description[IFDESCRSIZE]; /* interface description */ }