* Node constructor */
| 183 | * Node constructor |
| 184 | */ |
| 185 | static int |
| 186 | ng_car_constructor(node_p node) |
| 187 | { |
| 188 | priv_p priv; |
| 189 | |
| 190 | /* Initialize private descriptor. */ |
| 191 | priv = malloc(sizeof(*priv), M_NETGRAPH, M_WAITOK | M_ZERO); |
| 192 | |
| 193 | NG_NODE_SET_PRIVATE(node, priv); |
| 194 | priv->node = node; |
| 195 | |
| 196 | /* |
| 197 | * Arbitrary default values |
| 198 | */ |
| 199 | |
| 200 | priv->upper.hook = NULL; |
| 201 | priv->upper.dest = NULL; |
| 202 | priv->upper.tc = priv->upper.conf.cbs = NG_CAR_CBS_MIN; |
| 203 | priv->upper.te = priv->upper.conf.ebs = NG_CAR_EBS_MIN; |
| 204 | priv->upper.conf.cir = NG_CAR_CIR_DFLT; |
| 205 | priv->upper.conf.green_action = NG_CAR_ACTION_FORWARD; |
| 206 | priv->upper.conf.yellow_action = NG_CAR_ACTION_FORWARD; |
| 207 | priv->upper.conf.red_action = NG_CAR_ACTION_DROP; |
| 208 | priv->upper.conf.mode = 0; |
| 209 | getbinuptime(&priv->upper.lastRefill); |
| 210 | priv->upper.q_first = 0; |
| 211 | priv->upper.q_last = 0; |
| 212 | ng_callout_init(&priv->upper.q_callout); |
| 213 | mtx_init(&priv->upper.q_mtx, "ng_car_u", NULL, MTX_DEF); |
| 214 | |
| 215 | priv->lower.hook = NULL; |
| 216 | priv->lower.dest = NULL; |
| 217 | priv->lower.tc = priv->lower.conf.cbs = NG_CAR_CBS_MIN; |
| 218 | priv->lower.te = priv->lower.conf.ebs = NG_CAR_EBS_MIN; |
| 219 | priv->lower.conf.cir = NG_CAR_CIR_DFLT; |
| 220 | priv->lower.conf.green_action = NG_CAR_ACTION_FORWARD; |
| 221 | priv->lower.conf.yellow_action = NG_CAR_ACTION_FORWARD; |
| 222 | priv->lower.conf.red_action = NG_CAR_ACTION_DROP; |
| 223 | priv->lower.conf.mode = 0; |
| 224 | priv->lower.lastRefill = priv->upper.lastRefill; |
| 225 | priv->lower.q_first = 0; |
| 226 | priv->lower.q_last = 0; |
| 227 | ng_callout_init(&priv->lower.q_callout); |
| 228 | mtx_init(&priv->lower.q_mtx, "ng_car_l", NULL, MTX_DEF); |
| 229 | |
| 230 | return (0); |
| 231 | } |
| 232 | |
| 233 | /* |
| 234 | * Add a hook. |
nothing calls this directly
no test coverage detected