summaryrefslogtreecommitdiff
path: root/usr/src/uts/common/inet/ip/rts.c
diff options
context:
space:
mode:
Diffstat (limited to 'usr/src/uts/common/inet/ip/rts.c')
-rw-r--r--usr/src/uts/common/inet/ip/rts.c24
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);