Lines Matching defs:icmp
94 * it is possible to I_PUSH "icmp", but that results in pushing a passthrough
99 static void icmp_bind_proto(icmp_t *icmp);
168 5707, "icmp", 1, INFPSZ, 512, 128
173 * We have separate open functions for the /dev/icmp and /dev/icmp6 devices.
192 /* For AF_INET aka /dev/icmp */
205 IP_MAXPACKET, /* TSDU_size. icmp allows maximum size messages. */
206 T_INVALID, /* ETSDU_size. icmp does not support expedited data. */
207 T_INVALID, /* CDATA_size. icmp does not support connect data. */
208 T_INVALID, /* DDATA_size. icmp does not support disconnect data. */
211 IP_MAXPACKET, /* TIDU_size. icmp allows maximum size messages. */
212 T_CLTS, /* SERV_type. icmp supports connection-less. */
316 icmp_t *icmp;
335 icmp = connp->conn_icmp;
344 if (icmp->icmp_state != TS_UNBND) {
346 "icmp_bind: bad state, %u", icmp->icmp_state);
424 icmp_t *icmp = connp->conn_icmp;
489 if (icmp->icmp_state != TS_UNBND) {
495 * Copy the source address into our icmp structure. This address
542 icmp->icmp_state = TS_IDLE;
578 icmp->icmp_state = TS_UNBND;
593 icmp_bind_proto(icmp_t *icmp)
595 conn_t *connp = icmp->icmp_connp;
608 * This routine handles each T_CONN_REQ message passed to icmp. It
719 icmp_t *icmp;
733 icmp = connp->conn_icmp;
801 if (icmp->icmp_state == TS_UNBND || icmp->icmp_state == TS_WCON_CREQ) {
807 if (icmp->icmp_state == TS_DATA_XFER) {
815 icmp->icmp_state = TS_IDLE;
885 icmp->icmp_state = TS_WCON_CREQ;
908 icmp->icmp_state = TS_DATA_XFER;
930 icmp->icmp_state = TS_IDLE;
1007 icmp_t *icmp = connp->conn_icmp;
1009 if (icmp->icmp_filter != NULL) {
1010 kmem_free(icmp->icmp_filter, sizeof (icmp6_filter_t));
1011 icmp->icmp_filter = NULL;
1020 ASSERT(icmp->icmp_connp == connp);
1021 bzero(icmp, sizeof (icmp_t));
1022 icmp->icmp_connp = connp;
1026 * This routine handles each T_DISCON_REQ message passed to icmp
1033 icmp_t *icmp = connp->conn_icmp;
1037 if (icmp->icmp_state != TS_DATA_XFER) {
1047 icmp->icmp_state = TS_IDLE;
1144 icmp_t *icmp = connp->conn_icmp;
1242 if (icmp->icmp_state == TS_DATA_XFER) {
1250 icmp->icmp_delayed_error = error;
1251 *((sin_t *)&icmp->icmp_delayed_addr) = sin;
1280 icmp_t *icmp = connp->conn_icmp;
1337 BUMP_MIB(&icmp->icmp_is->is_rawip_mib, rawipInErrors);
1411 if (icmp->icmp_state == TS_DATA_XFER) {
1420 icmp->icmp_delayed_error = error;
1421 *((sin6_t *)&icmp->icmp_delayed_addr) = sin6;
1447 icmp_t *icmp = Q_TO_ICMP(q);
1448 conn_t *connp = icmp->icmp_connp;
1476 if (icmp->icmp_state != TS_UNBND) {
1486 if (icmp->icmp_state == TS_DATA_XFER) {
1503 icmp_copy_info(struct T_info_ack *tap, icmp_t *icmp)
1505 conn_t *connp = icmp->icmp_connp;
1513 tap->CURRENT_state = icmp->icmp_state;
1518 icmp_do_capability_ack(icmp_t *icmp, struct T_capability_ack *tcap,
1524 icmp_copy_info(&tcap->INFO_ack, icmp);
1538 icmp_t *icmp = Q_TO_ICMP(q);
1551 icmp_do_capability_ack(icmp, tcap, cap_bits1);
1564 icmp_t *icmp = Q_TO_ICMP(q);
1571 icmp_copy_info((struct T_info_ack *)mp->b_rptr, icmp);
1646 /* For /dev/icmp aka AF_INET open */
1661 * This is the open routine for icmp. It allocates a icmp_t structure for
1667 icmp_t *icmp;
1699 icmp = connp->conn_icmp;
1712 ASSERT(connp->conn_icmp == icmp);
1713 ASSERT(icmp->icmp_connp == connp);
1716 icmp->icmp_state = TS_UNBND;
1764 icmp->icmp_is = is;
1812 icmp_t *icmp = Q_TO_ICMP(q);
1813 icmp_stack_t *is = icmp->icmp_is;
1859 icmp_t *icmp = connp->conn_icmp;
1891 *i1 = (int)icmp->icmp_hdrincl;
1936 if (icmp->icmp_filter == NULL) {
1940 (void) bcopy(icmp->icmp_filter, ptr,
1976 icmp_t *icmp = connp->conn_icmp;
1977 icmp_stack_t *is = icmp->icmp_is;
2008 icmp->icmp_hdrincl = 1;
2014 icmp->icmp_hdrincl = 0;
2017 icmp->icmp_hdrincl = 0;
2027 if (icmp->icmp_filter != NULL &&
2029 kmem_free(icmp->icmp_filter,
2031 icmp->icmp_filter = NULL;
2070 icmp->icmp_hdrincl = onoff;
2139 if (icmp->icmp_filter != NULL) {
2140 kmem_free(icmp->icmp_filter,
2142 icmp->icmp_filter = NULL;
2145 if (icmp->icmp_filter == NULL) {
2146 icmp->icmp_filter = kmem_alloc(
2149 if (icmp->icmp_filter == NULL) {
2154 (void) bcopy(invalp, icmp->icmp_filter, inlen);
2174 icmp_t *icmp = connp->conn_icmp;
2178 icmp_stack_t *is = icmp->icmp_is;
2350 icmp_bind_proto(icmp);
2482 icmp_queue_fallback(icmp_t *icmp, mblk_t *mp)
2484 ASSERT(MUTEX_HELD(&icmp->icmp_recv_lock));
2485 if (IPCL_IS_NONSTR(icmp->icmp_connp)) {
2489 if (icmp->icmp_fallback_queue_head == NULL) {
2490 ASSERT(icmp->icmp_fallback_queue_tail == NULL);
2491 icmp->icmp_fallback_queue_head = mp;
2492 icmp->icmp_fallback_queue_tail = mp;
2494 ASSERT(icmp->icmp_fallback_queue_tail != NULL);
2495 icmp->icmp_fallback_queue_tail->b_next = mp;
2496 icmp->icmp_fallback_queue_tail = mp;
2515 icmp_t *icmp = connp->conn_icmp;
2521 mutex_enter(&icmp->icmp_recv_lock);
2535 mutex_exit(&icmp->icmp_recv_lock);
2538 mp = icmp_queue_fallback(icmp, mp);
2539 mutex_exit(&icmp->icmp_recv_lock);
2544 ASSERT(MUTEX_NOT_HELD(&icmp->icmp_recv_lock));
2565 icmp_t *icmp;
2577 icmp = connp->conn_icmp;
2578 is = icmp->icmp_is;
2743 if (icmp->icmp_filter != NULL) {
2750 if (ICMP6_FILTER_WILLBLOCK(type, icmp->icmp_filter)) {
2938 icmp_t *icmp = connp->conn_icmp;
2942 if (icmp->icmp_state == TS_UNBND) {
2956 icmp->icmp_state = TS_UNBND;
3015 icmp_t *icmp = connp->conn_icmp;
3016 icmp_stack_t *is = icmp->icmp_is;
3335 icmp_t *icmp = connp->conn_icmp;
3336 icmp_stack_t *is = icmp->icmp_is;
3653 icmp_t *icmp = connp->conn_icmp;
3654 icmp_stack_t *is = icmp->icmp_is;
3814 icmp_t *icmp = connp->conn_icmp;
3815 icmp_stack_t *is = icmp->icmp_is;
3981 icmp_t *icmp = connp->conn_icmp;
3982 icmp_stack_t *is = icmp->icmp_is;
4126 icmp_t *icmp = connp->conn_icmp;
4130 icmp_stack_t *is = icmp->icmp_is;
4195 if (icmp->icmp_state == TS_UNBND) {
4238 if (icmp->icmp_state == TS_DATA_XFER &&
4292 if (icmp->icmp_hdrincl) {
4314 if (icmp->icmp_state == TS_DATA_XFER &&
4378 icmp_t *icmp = connp->conn_icmp;
4379 icmp_stack_t *is = icmp->icmp_is;
4412 if (icmp->icmp_state == TS_DATA_XFER) {
4537 if (icmp->icmp_state == TS_DATA_XFER) {
4717 icmp_t *icmp = connp->conn_icmp;
4801 /* The following TPI message is not supported by icmp. */
4807 /* The following 3 TPI requests are illegal for icmp. */
4825 if (icmp->icmp_state != TS_DATA_XFER) {
4873 icmp_t *icmp = connp->conn_icmp;
4935 if (icmp->icmp_state != TS_DATA_XFER) {
5041 ksp = kstat_create_netstack("icmp", 0, "rawip", "mib2",
5186 icmp_t *icmp = connp->conn_icmp;
5199 if (icmp->icmp_state != TS_DATA_XFER)
5211 if (icmp->icmp_state == TS_UNBND) {
5253 icmp_t *icmp;
5262 icmp = connp->conn_icmp;
5296 icmp_do_capability_ack(icmp, &tca, TC1_INFO);
5319 mutex_enter(&icmp->icmp_recv_lock);
5321 mp->b_next = icmp->icmp_fallback_queue_head;
5322 icmp->icmp_fallback_queue_head = mp;
5324 while (icmp->icmp_fallback_queue_head != NULL) {
5325 mp = icmp->icmp_fallback_queue_head;
5326 icmp->icmp_fallback_queue_head = mp->b_next;
5328 mutex_exit(&icmp->icmp_recv_lock);
5330 mutex_enter(&icmp->icmp_recv_lock);
5332 icmp->icmp_fallback_queue_tail = icmp->icmp_fallback_queue_head;
5341 mutex_exit(&icmp->icmp_recv_lock);
5343 ASSERT(icmp->icmp_fallback_queue_head == NULL &&
5344 icmp->icmp_fallback_queue_tail == NULL);
5416 icmp_t *icmp = connp->conn_icmp;
5423 if (icmp->icmp_state != TS_DATA_XFER)
5563 icmp_t *icmp = connp->conn_icmp;
5565 mutex_enter(&icmp->icmp_recv_lock);
5567 mutex_exit(&icmp->icmp_recv_lock);
5630 icmp_t *icmp = connp->conn_icmp;
5632 icmp_stack_t *is = icmp->icmp_is;
5642 if (icmp->icmp_state == TS_UNBND) {
5657 if (icmp->icmp_hdrincl) {
5675 if (icmp->icmp_state != TS_DATA_XFER) {
5690 if (icmp->icmp_state == TS_DATA_XFER) {
5742 if (icmp->icmp_delayed_error != 0) {
5743 sin6_t *sin2 = (sin6_t *)&icmp->icmp_delayed_addr;
5745 error = icmp->icmp_delayed_error;
5746 icmp->icmp_delayed_error = 0;
5801 if (icmp->icmp_delayed_error != 0) {
5802 sin_t *sin2 = (sin_t *)&icmp->icmp_delayed_addr;
5804 error = icmp->icmp_delayed_error;
5805 icmp->icmp_delayed_error = 0;