diff options
Diffstat (limited to 'usr/src/uts/common/inet/ip/rts.c')
-rw-r--r-- | usr/src/uts/common/inet/ip/rts.c | 24 |
1 files changed, 23 insertions, 1 deletions
diff --git a/usr/src/uts/common/inet/ip/rts.c b/usr/src/uts/common/inet/ip/rts.c index 4999f28d1e..2751b19993 100644 --- a/usr/src/uts/common/inet/ip/rts.c +++ b/usr/src/uts/common/inet/ip/rts.c @@ -561,7 +561,6 @@ rts_opt_get(conn_t *connp, int level, int name, uchar_t *ptr) case SO_TYPE: *i1 = SOCK_RAW; break; - /* * The following three items are available here, * but are only meaningful to IP. @@ -597,6 +596,15 @@ rts_opt_get(conn_t *connp, int level, int name, uchar_t *ptr) return (-1); } break; + case SOL_ROUTE: + switch (name) { + case RT_AWARE: + mutex_enter(&connp->conn_lock); + *i1 = connp->conn_rtaware; + mutex_exit(&connp->conn_lock); + break; + } + break; default: return (-1); } @@ -701,6 +709,20 @@ rts_do_opt_set(conn_t *connp, int level, int name, uint_t inlen, return (EINVAL); } break; + case SOL_ROUTE: + switch (name) { + case RT_AWARE: + if (!checkonly) { + mutex_enter(&connp->conn_lock); + connp->conn_rtaware = *i1; + mutex_exit(&connp->conn_lock); + } + break; /* goto sizeof (int) option return */ + default: + *outlenp = 0; + return (EINVAL); + } + break; default: *outlenp = 0; return (EINVAL); |