| 105 | }; |
| 106 | |
| 107 | static void |
| 108 | protosw_init(struct protosw *pr) |
| 109 | { |
| 110 | struct pr_usrreqs *pu; |
| 111 | |
| 112 | pu = pr->pr_usrreqs; |
| 113 | KASSERT(pu != NULL, ("protosw_init: %ssw[%d] has no usrreqs!", |
| 114 | pr->pr_domain->dom_name, |
| 115 | (int)(pr - pr->pr_domain->dom_protosw))); |
| 116 | |
| 117 | /* |
| 118 | * Protocol switch methods fall into three categories: mandatory, |
| 119 | * mandatory but protosw_init() provides a default, and optional. |
| 120 | * |
| 121 | * For true protocols (i.e., pru_attach != NULL), KASSERT truly |
| 122 | * mandatory methods with no defaults, and initialize defaults for |
| 123 | * other mandatory methods if the protocol hasn't defined an |
| 124 | * implementation (NULL function pointer). |
| 125 | */ |
| 126 | #if 0 |
| 127 | if (pu->pru_attach != NULL) { |
| 128 | KASSERT(pu->pru_abort != NULL, |
| 129 | ("protosw_init: %ssw[%d] pru_abort NULL", |
| 130 | pr->pr_domain->dom_name, |
| 131 | (int)(pr - pr->pr_domain->dom_protosw))); |
| 132 | KASSERT(pu->pru_send != NULL, |
| 133 | ("protosw_init: %ssw[%d] pru_send NULL", |
| 134 | pr->pr_domain->dom_name, |
| 135 | (int)(pr - pr->pr_domain->dom_protosw))); |
| 136 | } |
| 137 | #endif |
| 138 | |
| 139 | #define DEFAULT(foo, bar) if ((foo) == NULL) (foo) = (bar) |
| 140 | DEFAULT(pu->pru_accept, pru_accept_notsupp); |
| 141 | DEFAULT(pu->pru_aio_queue, pru_aio_queue_notsupp); |
| 142 | DEFAULT(pu->pru_bind, pru_bind_notsupp); |
| 143 | DEFAULT(pu->pru_bindat, pru_bindat_notsupp); |
| 144 | DEFAULT(pu->pru_connect, pru_connect_notsupp); |
| 145 | DEFAULT(pu->pru_connect2, pru_connect2_notsupp); |
| 146 | DEFAULT(pu->pru_connectat, pru_connectat_notsupp); |
| 147 | DEFAULT(pu->pru_control, pru_control_notsupp); |
| 148 | DEFAULT(pu->pru_disconnect, pru_disconnect_notsupp); |
| 149 | DEFAULT(pu->pru_listen, pru_listen_notsupp); |
| 150 | DEFAULT(pu->pru_peeraddr, pru_peeraddr_notsupp); |
| 151 | DEFAULT(pu->pru_rcvd, pru_rcvd_notsupp); |
| 152 | DEFAULT(pu->pru_rcvoob, pru_rcvoob_notsupp); |
| 153 | DEFAULT(pu->pru_sense, pru_sense_null); |
| 154 | DEFAULT(pu->pru_shutdown, pru_shutdown_notsupp); |
| 155 | DEFAULT(pu->pru_sockaddr, pru_sockaddr_notsupp); |
| 156 | DEFAULT(pu->pru_sosend, sosend_generic); |
| 157 | DEFAULT(pu->pru_soreceive, soreceive_generic); |
| 158 | DEFAULT(pu->pru_sopoll, sopoll_generic); |
| 159 | DEFAULT(pu->pru_ready, pru_ready_notsupp); |
| 160 | #undef DEFAULT |
| 161 | if (pr->pr_init) |
| 162 | (*pr->pr_init)(); |
| 163 | } |
| 164 |
no outgoing calls
no test coverage detected