1.\" Copyright (c) 2012 The FreeBSD Foundation 2.\" All rights reserved. 3.\" 4.\" This software was developed by Edward Tomasz Napierala under sponsorship 5.\" from the FreeBSD Foundation. 6.\" 7.\" Redistribution and use in source and binary forms, with or without 8.\" modification, are permitted provided that the following conditions 9.\" are met: 10.\" 1. Redistributions of source code must retain the above copyright 11.\" notice, this list of conditions and the following disclaimer. 12.\" 2. Redistributions in binary form must reproduce the above copyright 13.\" notice, this list of conditions and the following disclaimer in the 14.\" documentation and/or other materials provided with the distribution. 15.\" 16.\" THIS SOFTWARE IS PROVIDED BY THE AUTHORS AND CONTRIBUTORS ``AS IS'' AND 17.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 18.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 19.\" ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE LIABLE 20.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 21.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 22.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 23.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 24.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 25.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 26.\" SUCH DAMAGE. 27.\" 28.\" $FreeBSD$ 29.\" 30.Dd February 7, 2015 31.Dt CTL.CONF 5 32.Os 33.Sh NAME 34.Nm ctl.conf 35.Nd CAM Target Layer / iSCSI target daemon configuration file 36.Sh DESCRIPTION 37The 38.Nm 39configuration file is used by the 40.Xr ctld 8 41daemon. 42Lines starting with 43.Ql # 44are interpreted as comments. 45The general syntax of the 46.Nm 47file is: 48.Bd -literal -offset indent 49.No pidfile Ar path 50 51.No auth-group Ar name No { 52.Dl chap Ar user Ar secret 53.Dl ... 54} 55 56.No portal-group Ar name No { 57.Dl listen Ar address 58.\".Dl listen-iser Ar address 59.Dl discovery-auth-group Ar name 60.Dl ... 61} 62 63.No lun Ar name No { 64.Dl path Ar path 65} 66 67.No target Ar name { 68.Dl auth-group Ar name 69.Dl portal-group Ar name Op Ar agname 70.Dl port Ar name 71.Dl lun Ar number Ar name 72.Dl lun Ar number No { 73.Dl path Ar path 74.Dl } 75.Dl ... 76} 77.Ed 78.Ss Global Context 79.Bl -tag -width indent 80.It Ic auth-group Ar name 81Create an 82.Sy auth-group 83configuration context, 84defining a new auth-group, 85which can then be assigned to any number of targets. 86.It Ic debug Ar level 87The debug verbosity level. 88The default is 0. 89.It Ic maxproc Ar number 90The limit for concurrently running child processes handling 91incoming connections. 92The default is 30. 93A setting of 0 disables the limit. 94.It Ic pidfile Ar path 95The path to the pidfile. 96The default is 97.Pa /var/run/ctld.pid . 98.It Ic portal-group Ar name 99Create a 100.Sy portal-group 101configuration context, 102defining a new portal-group, 103which can then be assigned to any number of targets. 104.It Ic lun Ar name 105Create a 106.Sy lun 107configuration context, defining a LUN to be exported by some target(s). 108.It Ic target Ar name 109Create a 110.Sy target 111configuration context, which can contain one or more 112.Sy lun 113contexts. 114.It Ic timeout Ar seconds 115The timeout for login sessions, after which the connection 116will be forcibly terminated. 117The default is 60. 118A setting of 0 disables the timeout. 119.It Ic isns-server Ar address 120An IPv4 or IPv6 address and optionally port of iSNS server to register on. 121.It Ic isns-period Ar seconds 122iSNS registration period. 123Registered Network Entity not updated during this period will be unregistered. 124The default is 900. 125.It Ic isns-timeout Ar seconds 126Timeout for iSNS requests. 127The default is 5. 128.El 129.Ss auth-group Context 130.Bl -tag -width indent 131.It Ic auth-type Ar type 132Sets the authentication type. 133Type can be either 134.Qq Ar none , 135.Qq Ar deny , 136.Qq Ar chap , 137or 138.Qq Ar chap-mutual . 139In most cases it is not necessary to set the type using this clause; 140it is usually used to disable authentication for a given 141.Sy auth-group . 142.It Ic chap Ar user Ar secret 143A set of CHAP authentication credentials. 144Note that for any 145.Sy auth-group , 146the configuration may only contain either 147.Sy chap 148or 149.Sy chap-mutual 150entries; it is an error to mix them. 151.It Ic chap-mutual Ar user Ar secret Ar mutualuser Ar mutualsecret 152A set of mutual CHAP authentication credentials. 153Note that for any 154.Sy auth-group , 155the configuration may only contain either 156.Sy chap 157or 158.Sy chap-mutual 159entries; it is an error to mix them. 160.It Ic initiator-name Ar initiator-name 161An iSCSI initiator name. 162Only initiators with a name matching one of the defined 163names will be allowed to connect. 164If not defined, there will be no restrictions based on initiator 165name. 166.It Ic initiator-portal Ar address Ns Op / Ns Ar prefixlen 167An iSCSI initiator portal: an IPv4 or IPv6 address, optionally 168followed by a literal slash and a prefix length. 169Only initiators with an address matching one of the defined 170addresses will be allowed to connect. 171If not defined, there will be no restrictions based on initiator 172address. 173.El 174.Ss portal-group Context 175.Bl -tag -width indent 176.It Ic discovery-auth-group Ar name 177Assign a previously defined authentication group to the portal group, 178to be used for target discovery. 179By default, portal groups are assigned predefined 180.Sy auth-group 181.Qq Ar default , 182which denies discovery. 183Another predefined 184.Sy auth-group , 185.Qq Ar no-authentication , 186may be used 187to permit discovery without authentication. 188.It Ic discovery-filter Ar filter 189Determines which targets are returned during discovery. 190Filter can be either 191.Qq Ar none , 192.Qq Ar portal , 193.Qq Ar portal-name , 194or 195.Qq Ar portal-name-auth . 196When set to 197.Qq Ar none , 198discovery will return all targets assigned to that portal group. 199When set to 200.Qq Ar portal , 201discovery will not return targets that cannot be accessed by the 202initiator because of their 203.Sy initiator-portal . 204When set to 205.Qq Ar portal-name , 206the check will include both 207.Sy initiator-portal 208and 209.Sy initiator-name . 210When set to 211.Qq Ar portal-name-auth , 212the check will include 213.Sy initiator-portal , 214.Sy initiator-name , 215and authentication credentials. 216The target is returned if it does not require CHAP authentication, 217or if the CHAP user and secret used during discovery match those 218used by the target. 219Note that when using 220.Qq Ar portal-name-auth , 221targets that require CHAP authentication will only be returned if 222.Sy discovery-auth-group 223requires CHAP. 224The default is 225.Qq Ar none . 226.It Ic listen Ar address 227An IPv4 or IPv6 address and port to listen on for incoming connections. 228.\".It Ic listen-iser Ar address 229.\"An IPv4 or IPv6 address and port to listen on for incoming connections 230.\"using iSER (iSCSI over RDMA) protocol. 231.It Ic redirect Aq Ar address 232IPv4 or IPv6 address to redirect initiators to. 233When configured, all initiators attempting to connect to portal 234belonging to this 235.Sy portal-group 236will get redirected using "Target moved temporarily" login response. 237Redirection happens before authentication and any 238.Sy initiator-name 239or 240.Sy initiator-portal 241checks are skipped. 242.El 243.Ss target Context 244.Bl -tag -width indent 245.It Ic alias Ar text 246Assign a human-readable description to the target. 247There is no default. 248.It Ic auth-group Ar name 249Assign a previously defined authentication group to the target. 250By default, targets that do not specify their own auth settings, 251using clauses such as 252.Sy chap 253or 254.Sy initiator-name , 255are assigned 256predefined 257.Sy auth-group 258.Qq Ar default , 259which denies all access. 260Another predefined 261.Sy auth-group , 262.Qq Ar no-authentication , 263may be used to permit access 264without authentication. 265Note that targets must only use one of 266.Sy auth-group , chap , No or Sy chap-mutual ; 267it is a configuration error to mix multiple types in one target. 268.It Ic auth-type Ar type 269Sets the authentication type. 270Type can be either 271.Qq Ar none , 272.Qq Ar deny , 273.Qq Ar chap , 274or 275.Qq Ar chap-mutual . 276In most cases it is not necessary to set the type using this clause; 277it is usually used to disable authentication for a given 278.Sy target . 279This clause is mutually exclusive with 280.Sy auth-group ; 281one cannot use 282both in a single target. 283.It Ic chap Ar user Ar secret 284A set of CHAP authentication credentials. 285Note that targets must only use one of 286.Sy auth-group , chap , No or Sy chap-mutual ; 287it is a configuration error to mix multiple types in one target. 288.It Ic chap-mutual Ar user Ar secret Ar mutualuser Ar mutualsecret 289A set of mutual CHAP authentication credentials. 290Note that targets must only use one of 291.Sy auth-group , chap , No or Sy chap-mutual ; 292it is a configuration error to mix multiple types in one target. 293.It Ic initiator-name Ar initiator-name 294An iSCSI initiator name. 295Only initiators with a name matching one of the defined 296names will be allowed to connect. 297If not defined, there will be no restrictions based on initiator 298name. 299This clause is mutually exclusive with 300.Sy auth-group ; 301one cannot use 302both in a single target. 303.It Ic initiator-portal Ar address Ns Op / Ns Ar prefixlen 304An iSCSI initiator portal: an IPv4 or IPv6 address, optionally 305followed by a literal slash and a prefix length. 306Only initiators with an address matching one of the defined 307addresses will be allowed to connect. 308If not defined, there will be no restrictions based on initiator 309address. 310This clause is mutually exclusive with 311.Sy auth-group ; 312one cannot use 313both in a single target. 314.It Ic offload Ar driver 315Define iSCSI hardware offload driver to use for this target. 316.It Ic portal-group Ar name Op Ar agname 317Assign a previously defined portal group to the target. 318The default portal group is 319.Qq Ar default , 320which makes the target available 321on TCP port 3260 on all configured IPv4 and IPv6 addresses. 322Optional second argument specifies auth group name for connections 323to this specific portal group. 324If second argument is not specified, target auth group is used. 325.It Ic port Ar name 326Assign specified CTL port (such as "isp0") to the target. 327On startup ctld configures LUN mapping and enables all assigned ports. 328Each port can be assigned to only one target. 329.It Ic redirect Aq Ar address 330IPv4 or IPv6 address to redirect initiators to. 331When configured, all initiators attempting to connect to this target 332will get redirected using "Target moved temporarily" login response. 333Redirection happens after successful authentication. 334.It Ic lun Ar number Ar name 335Export previously defined 336.Sy lun 337by the parent target. 338.It Ic lun Ar number 339Create a 340.Sy lun 341configuration context, defining a LUN exported by the parent target. 342.El 343.Ss lun Context 344.Bl -tag -width indent 345.It Ic backend Ar block No | Ar ramdisk 346The CTL backend to use for a given LUN. 347Valid choices are 348.Qq Ar block 349and 350.Qq Ar ramdisk ; 351block is used for LUNs backed 352by files or disk device nodes; ramdisk is a bitsink device, used mostly for 353testing. 354The default backend is block. 355.It Ic blocksize Ar size 356The blocksize visible to the initiator. 357The default blocksize is 512. 358.It Ic device-id Ar string 359The SCSI Device Identification string presented to the initiator. 360.It Ic option Ar name Ar value 361The CTL-specific options passed to the kernel. 362All CTL-specific options are documented in the 363.Sx OPTIONS 364section of 365.Xr ctladm 8 . 366.It Ic path Ar path 367The path to the file or device node used to back the LUN. 368.It Ic serial Ar string 369The SCSI serial number presented to the initiator. 370.It Ic size Ar size 371The LUN size, in bytes. 372.El 373.Sh FILES 374.Bl -tag -width ".Pa /etc/ctl.conf" -compact 375.It Pa /etc/ctl.conf 376The default location of the 377.Xr ctld 8 378configuration file. 379.El 380.Sh EXAMPLES 381.Bd -literal 382auth-group ag0 { 383 chap-mutual "user" "secret" "mutualuser" "mutualsecret" 384 chap-mutual "user2" "secret2" "mutualuser" "mutualsecret" 385 initiator-portal 192.168.1.1/16 386} 387 388auth-group ag1 { 389 auth-type none 390 initiator-name "iqn.2012-06.com.example:initiatorhost1" 391 initiator-name "iqn.2012-06.com.example:initiatorhost2" 392 initiator-portal 192.168.1.1/24 393 initiator-portal [2001:db8::de:ef] 394} 395 396portal-group pg0 { 397 discovery-auth-group no-authentication 398 listen 0.0.0.0:3260 399 listen [::]:3260 400 listen [fe80::be:ef]:3261 401} 402 403target iqn.2012-06.com.example:target0 { 404 alias "Example target" 405 auth-group no-authentication 406 lun 0 { 407 path /dev/zvol/tank/example_0 408 blocksize 4096 409 size 4G 410 } 411} 412 413lun example_1 { 414 path /dev/zvol/tank/example_1 415} 416 417target iqn.2012-06.com.example:target1 { 418 chap chapuser chapsecret 419 lun 0 example_1 420} 421 422target iqn.2012-06.com.example:target2 { 423 auth-group ag0 424 portal-group pg0 425 lun 0 example_1 426 lun 1 { 427 path /dev/zvol/tank/example_2 428 option foo bar 429 } 430} 431.Ed 432.Sh SEE ALSO 433.Xr ctl 4 , 434.Xr ctladm 8 , 435.Xr ctld 8 436.Sh AUTHORS 437The 438.Nm 439configuration file functionality for 440.Xr ctld 8 441was developed by 442.An Edward Tomasz Napierala Aq Mt trasz@FreeBSD.org 443under sponsorship from the FreeBSD Foundation. 444