Mercurial > illumos > illumos-gate
changeset 13390:a8f63d8645fa
1108 kRPC: ticotsord doesn't support T_ADDR_REQ when datablock type is M_PCPROTO
Reviewed by: Gordon Ross <gordon.w.ross@gmail.com>
Reviewed by: Dan McDonald <danmcd@nexenta.com>
Approved by: Eric Schrock <Eric.Schrock@delphix.com>
author | Dan Kruchinin <dan.kruchinin@nexenta.com> |
---|---|
date | Mon, 20 Jun 2011 06:44:45 -0700 |
parents | 5929916bbfff |
children | e851229134c9 |
files | usr/src/uts/common/io/tl.c |
diffstat | 1 files changed, 20 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- a/usr/src/uts/common/io/tl.c Wed Jun 15 20:53:22 2011 -0400 +++ b/usr/src/uts/common/io/tl.c Mon Jun 20 06:44:45 2011 -0700 @@ -22,6 +22,9 @@ * Copyright 2010 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. */ +/* + * Copyright 2011 Nexenta Systems, Inc. All rights reserved. + */ /* * Multithreaded STREAMS Local Transport Provider. @@ -777,7 +780,7 @@ -2, /* ETSDU_size -2 => not supported */ -2, /* CDATA_size -2 => not supported */ -2, /* DDATA_size -2 => not supported */ - -1, /* ADDR_size -1 => unlimited */ + -1, /* ADDR_size -1 => infinite */ -1, /* OPT_size */ 0, /* TIDU_size - fill at run time */ T_CLTS, /* SERV_type */ @@ -839,6 +842,7 @@ static void tl_discon_req(mblk_t *, tl_endpt_t *); static void tl_capability_req(mblk_t *, tl_endpt_t *); static void tl_info_req_ser(mblk_t *, tl_endpt_t *); +static void tl_addr_req_ser(mblk_t *, tl_endpt_t *); static void tl_info_req(mblk_t *, tl_endpt_t *); static void tl_addr_req(mblk_t *, tl_endpt_t *); static void tl_connected_cots_addr_req(mblk_t *, tl_endpt_t *); @@ -1853,6 +1857,10 @@ case T_INFO_REQ: tl_proc = tl_info_req_ser; break; + case T_ADDR_REQ: + tl_proc = tl_addr_req_ser; + break; + default: (void) (STRLOG(TL_ID, tep->te_minor, 1, SL_TRACE|SL_ERROR, @@ -4159,6 +4167,17 @@ } } +static void +tl_addr_req_ser(mblk_t *mp, tl_endpt_t *tep) +{ + if (!tep->te_closing) + tl_addr_req(mp, tep); + else + freemsg(mp); + + tl_serializer_exit(tep); + tl_refrele(tep); +} static void tl_addr_req(mblk_t *mp, tl_endpt_t *tep)