.\" -*- nroff -*- .\" -*- nroff -*- .\" ovs.tmac .\" .\" Open vSwitch troff macro library . . .\" Continuation line for .IP. .de IQ . br . ns . IP "\\$1" .. . .\" Introduces a sub-subsection .de ST . PP . RS -0.15in . I "\\$1" . RE .. . .\" The content between the lines below is from an-ext.tmac in groff .\" 1.21, with some modifications. .\" ---------------------------------------------------------------------- .\" an-ext.tmac .\" .\" Written by Eric S. Raymond .\" Werner Lemberg .\" .\" Version 2007-Feb-02 .\" .\" Copyright (C) 2007, 2009, 2011 Free Software Foundation, Inc. .\" You may freely use, modify and/or distribute this file. .\" .\" .\" The code below provides extension macros for the `man' macro package. .\" Care has been taken to make the code portable; groff extensions are .\" properly hidden so that all troff implementations can use it without .\" changes. .\" .\" With groff, this file is sourced by the `man' macro package itself. .\" Man page authors who are concerned about portability might add the .\" used macros directly to the prologue of the man page(s). . . .\" Convention: Auxiliary macros and registers start with `m' followed .\" by an uppercase letter or digit. . . .\" Declare start of command synopsis. Sets up hanging indentation. .de SY . ie !\\n(mS \{\ . nh . nr mS 1 . nr mA \\n(.j . ad l . nr mI \\n(.i . \} . el \{\ . br . ns . \} . . HP \w'\fB\\$1\fP\ 'u . B "\\$1" .. . . .\" End of command synopsis. Restores adjustment. .de YS . in \\n(mIu . ad \\n(mA . hy \\n(HY . nr mS 0 .. . . .\" Declare optional option. .de OP . ie \\n(.$-1 \ . RI "[\fB\\$1\fP" "\ \\$2" "]" . el \ . RB "[" "\\$1" "]" .. . . .\" Start URL. .de UR . ds m1 \\$1\" . nh . if \\n(mH \{\ . \" Start diversion in a new environment. . do ev URL-div . do di URL-div . \} .. . . .\" End URL. .de UE . ie \\n(mH \{\ . br . di . ev . . \" Has there been one or more input lines for the link text? . ie \\n(dn \{\ . do HTML-NS "" . \" Yes, strip off final newline of diversion and emit it. . do chop URL-div . do URL-div \c . do HTML-NS . \} . el \ . do HTML-NS "\\*(m1" \&\\$*\" . \} . el \ \\*(la\\*(m1\\*(ra\\$*\" . . hy \\n(HY .. . . .\" Start email address. .de MT . ds m1 \\$1\" . nh . if \\n(mH \{\ . \" Start diversion in a new environment. . do ev URL-div . do di URL-div . \} .. . . .\" End email address. .de ME . ie \\n(mH \{\ . br . di . ev . . \" Has there been one or more input lines for the link text? . ie \\n(dn \{\ . do HTML-NS "" . \" Yes, strip off final newline of diversion and emit it. . do chop URL-div . do URL-div \c . do HTML-NS . \} . el \ . do HTML-NS "\\*(m1" \&\\$*\" . \} . el \ \\*(la\\*(m1\\*(ra\\$*\" . . hy \\n(HY .. . . .\" Continuation line for .TP header. .de TQ . br . ns . TP \\$1\" no doublequotes around argument! .. . . .\" Start example. .de EX . nr mE \\n(.f . nf . nh . ft CR .. . . .\" End example. .de EE . ft \\n(mE . fi . hy \\n(HY .. . .\" EOF .\" ---------------------------------------------------------------------- .TH vtep\-ctl 8 "March 2013" "Open vSwitch" "Open vSwitch Manual" .\" This program's name: .ds PN vtep\-ctl . .SH "نام (NAME)" vtep\-ctl \- ابزاری برای پرس‌وجو و پیکربندی پایگاه‌داده VTEP . .SH "خلاصه دستور (SYNOPSIS)" \fBvtep\-ctl\fR [\fIگزینه‌ها\fR] \fB\-\-\fR [\fIگزینه‌ها\fR] \fIدستور \fR[\fIآرگومان‌ها\fR] [\fB\-\-\fR [\fIگزینه‌ها\fR] \fIدستور \fR[\fIآرگومان‌ها\fR]]... . .SH "توضیحات (DESCRIPTION)" برنامه \fBvtep\-ctl\fR یک پایگاه‌داده VTEP را پیکربندی می‌کند. برای مستندات جامع طرحواره پایگاه‌داده به \fBvtep\fR(5) مراجعه کنید. .PP \fBvtep\-ctl\fR به یک فرآیند \fBovsdb\-server\fR متصل می‌شود که یک پایگاه‌داده پیکربندی VTEP را نگهداری می‌کند. با استفاده از این اتصال، بسته به دستورات ارائه‌شده، پایگاه‌داده را پرس‌وجو کرده و احتمالاً تغییراتی را اعمال می‌کند. .PP \fBvtep\-ctl\fR می‌تواند هر تعداد دستور را در یک اجرای واحد انجام دهد، که به‌صورت یک تراکنش اتمیک منفرد بر روی پایگاه‌داده پیاده‌سازی می‌شود. .PP خط فرمان \fBvtep\-ctl\fR با گزینه‌های سراسری شروع می‌شود (برای جزئیات به بخش \fBگزینه‌ها (OPTIONS)\fR در زیر مراجعه کنید). پس از گزینه‌های سراسری، یک یا چند دستور قرار می‌گیرند. هر دستور باید با یک \fB\-\-\fR جداگانه به عنوان یک آرگومان خط فرمان شروع شود تا از دستورات بعدی جدا گردد. (\fB\-\-\fR قبل از دستور اول اختیاری است.) خود دستور با گزینه‌های مخصوص دستور (در صورت وجود) شروع می‌شود و پس از آن نام دستور و آرگومان‌ها می‌آیند. برای مثال‌های نحوه نگارش به بخش \fBمثال‌ها (EXAMPLES)\fR در زیر مراجعه کنید. . .SH "گزینه‌ها (OPTIONS)" . گزینه‌های زیر بر رفتار کلی \fBvtep\-ctl\fR تأثیر می‌گذارند. برخی از دستورات منفرد نیز گزینه‌های خاص خود را می‌پذیرند که دقیقاً قبل از نام دستور مشخص می‌شوند. اگر اولین دستور در خط فرمان دارای گزینه باشد، آن گزینه‌ها باید با \fB\-\-\fR از گزینه‌های سراسری جدا شوند. . .IP "\fB\-\-db=\fIserver\fR" سرور پایگاه‌داده‌ای را تعیین می‌کند که \fBvtep\-ctl\fR برای پرس‌وجو یا تغییر پیکربندی با آن تماس می‌گیرد. \fIserver\fR می‌تواند یک روش اتصال فعال یا غیرفعال OVSDB باشد، همان‌طور که در \fBovsdb\fR(7) توصیف شده است. مقدار پیش‌فرض \fBunix:/run/openvswitch/db.sock\fR است. .IP "\fB\-\-no\-syslog\fR" به‌طور پیش‌فرض، \fBvtep\-ctl\fR آرگومان‌های خود و جزئیات هرگونه تغییری را که ایجاد می‌کند در لاگ سیستم ثبت می‌نماید. این گزینه این قابلیت ثبت وقایع را غیرفعال می‌کند. .IP این گزینه معادل \fB\-\-verbose=vtep_ctl:syslog:warn\fR است. . .IP "\fB\-\-oneline\fR" قالب خروجی را تغییر می‌دهد تا خروجی هر دستور در یک خط چاپ شود. کاراکترهای خط جدید که در غیر این صورت خطوط را جدا می‌کردند به‌صورت \fB\\n\fR چاپ می‌شوند، و هر نمونه از \fB\\\fR که در خروجی ظاهر شود دو برابر می‌شود. برای هر دستوری که خروجی ندارد یک خط خالی چاپ می‌کند. این گزینه بر قالب‌بندی خروجی دستورات \fBlist\fR یا \fBfind\fR تأثیری ندارد؛ به بخش \fBگزینه‌های قالب‌بندی جدول\fR در زیر مراجعه کنید. . .IP "\fB\-\-dry\-run\fR" از اعمال تغییرات واقعی در پایگاه‌داده توسط \fBvtep\-ctl\fR جلوگیری می‌کند. . .IP "\fB\-t \fIsecs\fR" .IQ "\fB\-\-timeout=\fIsecs\fR" به‌طور پیش‌فرض، یا زمانی که \fIsecs\fR برابر \fB0\fR باشد، \fBvtep\-ctl\fR برای دریافت پاسخ از پایگاه‌داده تا ابد منتظر می‌ماند. این گزینه زمان اجرا را تقریباً به \fIsecs\fR ثانیه محدود می‌کند. در صورت اتمام مهلت زمانی، \fBvtep\-ctl\fR با سیگنال \fBSIGALRM\fR خارج می‌شود. (اتمام مهلت زمانی معمولاً فقط زمانی رخ می‌دهد که امکان تماس با پایگاه‌داده وجود نداشته باشد یا سیستم بیش از حد بارگذاری شده باشد.) . .SS "گزینه‌های قالب‌بندی جدول (Table Formatting Options)" این گزینه‌ها قالب خروجی دستورات \fBlist\fR و \fBfind\fR را کنترل می‌کنند. .IP "\fB\-f \fIformat\fR" .IQ "\fB\-\-format=\fIformat\fR" نوع قالب‌بندی جدول را تعیین می‌کند. انواع زیر برای \fIformat\fR در دسترس هستند: .RS .ie '\*(PN'ovsdb\-client' .IP "\fBtable\fR (پیش‌فرض)" .el .IP "\fBtable\fR" جدول‌های متنی دو بعدی با ستون‌های تراز شده. .ie '\*(PN'ovsdb\-client' .IP "\fBlist\fR" .el .IP "\fBlist\fR (پیش‌فرض)" یک فهرست با یک ستون در هر خط و سطرهایی که با یک خط خالی جدا شده‌اند. .IP "\fBhtml\fR" جدول‌های HTML. .IP "\fBcsv\fR" مقادیر جدا شده با کاما همان‌طور که در RFC 4180 تعریف شده است. .IP "\fBjson\fR" قالب JSON مطابق با تعریف RFC 4627. خروجی دنباله‌ای از شیء‌های JSON است که هر کدام متناظر با یک جدول است. هر شیء JSON دارای اعضای زیر با مقادیر ذکر شده است: .RS .IP "\fBcaption\fR" عنوان جدول. اگر جدول عنوانی نداشته باشد این عضو حذف می‌شود. .IP "\fBheadings\fR" آرایه‌ای با یک عنصر به ازای هر ستون جدول. هر عنصر آرایه یک رشته است که سرستون متناظر را نشان می‌دهد. .IP "\fBdata\fR" آرایه‌ای با یک عنصر به ازای هر سطر جدول. هر عنصر نیز آرایه‌ای با یک عنصر به ازای هر ستون جدول است. عناصر این آرایه سطح دوم، سلول‌هایی هستند که جدول را تشکیل می‌دهند. سلول‌هایی که داده‌ها یا انواع داده‌های OVSDB را نشان می‌دهند در قالبی که در مشخصات OVSDB توضیح داده شده بیان می‌شوند؛ سایر سلول‌ها صرفاً به صورت رشته‌های متنی بیان می‌شوند. .RE .RE . .IP "\fB\-d \fIformat\fR" .IQ "\fB\-\-data=\fIformat\fR" قالب‌بندی سلول‌ها را در جداول خروجی تعیین می‌کند مگر اینکه قالب جدول روی \fBjson\fR تنظیم شده باشد، که در این صورت قالب‌بندی \fBjson\fR همیشه هنگام قالب‌بندی سلول‌ها استفاده می‌شود. انواع زیر برای \fIformat\fR در دسترس هستند: .RS .IP "\fBstring\fR (پیش‌فرض)" قالب ساده توصیف‌شده در بخش \fBDatabase Values\fR .ie '\*(PN'ovs\-vsctl' زیر. .el از \fBovs\-vsctl\fR(8). .IP "\fBbare\fR" قالب ساده بدون نشانه‌های نگارشی: \fB[]\fR و \fB{}\fR در اطراف مجموعه‌ها، نگاشت‌ها و ستون‌های خالی حذف می‌شوند، موارد درون مجموعه‌ها و نگاشت‌ها با فاصله جدا می‌شوند، و رشته‌ها هرگز در علامت نقل‌قول قرار نمی‌گیرند. این قالب ممکن است تجزیه را برای اسکریپت‌ها آسان‌تر کند. .IP "\fBjson\fR" قالب JSON مطابق RFC 4627 همان‌طور که در بالا توضیح داده شد. .RE .IP . .IP "\fB\-\-no\-headings\fR" این گزینه سطر سرستون را که در غیر این صورت در سطر اول خروجی جدول ظاهر می‌شود، پنهان می‌کند. . .IP "\fB\-\-pretty\fR" به‌طور پیش‌فرض، JSON در خروجی تا حد امکان فشرده چاپ می‌شود. این گزینه باعث می‌شود JSON در خروجی به شکل خواناتری چاپ شود. اعضای شیء‌ها و عناصر آرایه‌ها در هر خط با تورفتگی چاپ می‌شوند. .IP این گزینه بر JSON در جدول‌ها تأثیری ندارد، که همیشه فشرده چاپ می‌شود. .IP "\fB\-\-bare\fR" معادل \fB\-\-format=list \-\-data=bare \-\-no\-headings\fR. .IP "\fB\-\-max\-column-width=\fIn\fR" فقط برای خروجی جدول، عرض هر ستون را در خروجی به \fIn\fR ستون کاراکتری محدود می‌کند. داده‌های سلول‌های طولانی‌تر در صورت لزوم برای جا شدن کوتاه می‌شوند. ستون‌ها در صورت چاپ سطر سرستون، همیشه به اندازه کافی عریض هستند که نام ستون‌ها را نمایش دهند. . .SS "گزینه‌های زیرساخت کلید عمومی (Public Key Infrastructure Options)" .IP "\fB\-p\fR \fIprivkey.pem\fR" .IQ "\fB\-\-private\-key=\fIprivkey.pem\fR" یک فایل PEM حاوی کلید خصوصی استفاده‌شده به‌عنوان هویت \fB\*(PN\fR برای اتصالات خروجی SSL/TLS را مشخص می‌کند. . .IP "\fB\-c\fR \fIcert.pem\fR" .IQ "\fB\-\-certificate=\fIcert.pem\fR" یک فایل PEM حاوی گواهی تعیین می‌کند که تأیید می‌نماید کلید خصوصی مشخص‌شده در \fB\-p\fR یا \fB\-\-private\-key\fR قابل اعتماد است. این گواهی باید توسط مرجع صدور گواهی (CA) امضا شده باشد که طرف مقابل در اتصالات SSL/TLS از آن برای اعتبارسنجی استفاده خواهد کرد. . .IP "\fB\-C\fR \fIcacert.pem\fR" .IQ "\fB\-\-ca\-cert=\fIcacert.pem\fR" یک فایل PEM حاوی گواهی CA مشخص می‌کند که \fB\*(PN\fR باید برای اعتبارسنجی گواهی‌های ارائه‌شده توسط همتایان SSL/TLS استفاده کند. (این ممکن است همان گواهی باشد که همتایان SSL/TLS برای تأیید گواهی مشخص‌شده در \fB\-c\fR یا \fB\-\-certificate\fR استفاده می‌کنند، یا بسته به طرح PKI مورد استفاده ممکن است گواهی متفاوتی باشد.) . .IP "\fB\-C none\fR" .IQ "\fB\-\-ca\-cert=none\fR" اعتبارسنجی گواهی‌های ارائه‌شده توسط همتایان SSL/TLS را غیرفعال می‌کند. این یک خطر امنیتی ایجاد می‌کند، زیرا به این معنی است که نمی‌توان تأیید کرد گواهی‌ها متعلق به میزبان‌های معتمد شناخته‌شده هستند. . .IP "\fB\-\-ssl\-server\-name=\fIservername\fR" نام سرور را برای استفاده در TLS Server Name Indication (SNI) مشخص می‌کند. به‌طور پیش‌فرض، نام میزبان برگرفته از رشته اتصال برای SNI استفاده می‌شود. این گزینه اجازه می‌دهد نام میزبان SNI بازنویسی شود، که هنگام اتصال از طریق پروکسی‌ها یا سرویس‌مش‌ها که نقطه پایانی اتصال با نام سرور مورد نظر متفاوت است، مفید خواهد بود. .IP "\fB\-\-bootstrap\-ca\-cert=\fIcacert.pem\fR" هنگامی که \fIcacert.pem\fR وجود دارد، این گزینه تأثیری مشابه \fB\-C\fR یا \fB\-\-ca\-cert\fR دارد. اگر وجود نداشته باشد، \fB\*(PN\fR تلاش می‌کند گواهی CA را از همتای SSL/TLS در اولین اتصال SSL/TLS خود دریافت کرده و آن را در فایل PEM نام‌برده ذخیره کند. اگر موفقیت‌آمیز باشد، بلافاصله اتصال را قطع کرده و مجدداً متصل می‌شود، و از آن به بعد تمام اتصالات SSL/TLS باید توسط گواهی امضاشده توسط گواهی CA به دست آمده احراز هویت شوند. .IP \fBاین گزینه اتصال SSL/TLS را در معرض حمله مرد میانی (man-in-the-middle) جهت به دست آوردن گواهی اولیه CA قرار می‌دهد\fR، اما ممکن است برای راه‌اندازی اولیه (bootstrapping) مفید باشد. .IP این گزینه تنها زمانی مفید است که همتای SSL/TLS گواهی CA خود را به عنوان بخشی از زنجیره گواهی SSL/TLS ارسال کند. پروتکل‌های SSL/TLS سرور را ملزم به ارسال گواهی CA نمی‌کنند. .IP این گزینه با \fB\-C\fR و \fB\-\-ca\-cert\fR مانعة‌الجمع است. .IP "\fB\-\-peer\-ca\-cert=\fIpeer-cacert.pem\fR" یک فایل PEM مشخص می‌کند که شامل یک یا چند گواهی اضافی برای ارسال به همتایان SSL/TLS است. \fIpeer-cacert.pem\fR باید گواهی CA مورد استفاده برای امضای گواهی خود \fB\*(PN\fR باشد، یعنی گواهی مشخص‌شده در \fB\-c\fR یا \fB\-\-certificate\fR. اگر گواهی \fB\*(PN\fR خودامضا باشد، آنگاه \fB\-\-certificate\fR و \fB\-\-peer\-ca\-cert\fR باید همان فایل را مشخص کنند. .IP این گزینه در عملکرد عادی مفید نیست، زیرا همتای SSL/TLS از قبل باید گواهی CA را داشته باشد تا به هویت \fB\*(PN\fR اطمینان کند. با این حال، این روشی برای یک نصب جدید فراهم می‌کند تا گواهی CA را در اولین اتصال SSL/TLS خود راه‌اندازی اولیه کند. .IP "\fB\-v\fR[\fIspec\fR] .IQ "\fB\-\-verbose=\fR[\fIspec\fR] . سطوح لاگ‌گیری را تنظیم می‌کند. بدون هیچ \fIspec\fR، سطح لاگ را برای هر ماژول و مقصد روی \fBdbg\fR تنظیم می‌کند. در غیر این صورت، \fIspec\fR فهرستی از کلمات است که با فاصله، کاما یا دونقطه از هم جدا شده‌اند، حداکثر یکی از هر دسته زیر: . .RS .IP \(bu یک نام ماژول معتبر، همان‌طور که توسط دستور \fBvlog/list\fR در \fBovs\-appctl\fR(8) نمایش داده می‌شود، تغییر سطح لاگ را به ماژول مشخص‌شده محدود می‌کند. . .IP \(bu \fBsyslog\fR، \fBconsole\fR یا \fBfile\fR، برای محدود کردن تغییر سطح لاگ فقط به ترتیب به لاگ سیستم، به کنسول، یا به یک فایل. (اگر \fB\-\-detach\fR مشخص شده باشد، \fB\*(PN\fR توصیف‌کننده‌های استاندارد فایل خود را می‌بندد، بنابراین لاگ‌گیری به کنسول هیچ تأثیری نخواهد داشت.) . .IP \(bu \fBoff\fR، \fBemer\fR، \fBerr\fR، \fBwarn\fR، \fBinfo\fR یا \fBdbg\fR، برای کنترل سطح لاگ. پیام‌های با شدت داده شده یا بالاتر لاگ خواهند شد و پیام‌های با شدت پایین‌تر فیلتر می‌شوند. \fBoff\fR تمام پیام‌ها را فیلتر می‌کند. برای تعریف هر سطح لاگ به \fBovs\-appctl\fR(8) مراجعه کنید. .RE . .IP بزرگی و کوچکی حروف در \fIspec\fR اهمیتی ندارد. .IP صرف‌نظر از سطوح لاگ تنظیم‌شده برای \fBfile\fR، لاگ‌گیری در یک فایل انجام نمی‌شود مگر اینکه \fB\-\-log\-file\fR نیز مشخص شده باشد (به زیر مراجعه کنید). .IP برای سازگاری با نسخه‌های قدیمی‌تر OVS، مقدار \fBany\fR به عنوان یک کلمه پذیرفته می‌شود اما هیچ تأثیری ندارد. . .IP "\fB\-v\fR" .IQ "\fB\-\-verbose\fR" حداکثر سطح جزئیات لاگ را تنظیم می‌کند که معادل \fB\-\-verbose=dbg\fR است. . .IP "\fB\-vPATTERN:\fIdestination\fB:\fIpattern\fR" .IQ "\fB\-\-verbose=PATTERN:\fIdestination\fB:\fIpattern\fR" الگوی لاگ را برای \fIdestination\fR روی \fIpattern\fR تنظیم می‌کند. برای توصیف نحو معتبر \fIpattern\fR به \fBovs\-appctl\fR(8) مراجعه کنید. . .IP "\fB\-vFACILITY:\fIfacility\fR" .IQ "\fB\-\-verbose=FACILITY:\fIfacility\fR" بخش تسهیلات (facility) پیام لاگ بر اساس RFC5424 را تنظیم می‌کند. \fIfacility\fR می‌تواند یکی از موارد \fBkern\fR، \fBuser\fR، \fBmail\fR، \fBdaemon\fR، \fBauth\fR، \fBsyslog\fR، \fBlpr\fR، \fBnews\fR، \fBuucp\fR، \fBclock\fR، \fBftp\fR، \fBntp\fR، \fBaudit\fR، \fBalert\fR، \fBclock2\fR، \fBlocal0\fR، \fBlocal1\fR، \fBlocal2\fR، \fBlocal3\fR، \fBlocal4\fR، \fBlocal5\fR، \fBlocal6\fR یا \fBlocal7\fR باشد. اگر این گزینه مشخص نشود، \fBdaemon\fR به عنوان پیش‌فرض برای لاگ سیستم محلی و \fBlocal0\fR هنگام ارسال پیام به مقصد ارائه‌شده از طریق گزینه \fB\-\-syslog\-target\fR استفاده می‌شود. . .TP \fB\-\-log\-file\fR[\fB=\fIfile\fR] لاگ‌گیری در یک فایل را فعال می‌کند. اگر \fIfile\fR مشخص شود، به عنوان نام دقیق فایل لاگ استفاده می‌شود. نام پیش‌فرض فایل لاگ در صورت حذف \fIfile\fR برابر \fB/var/log/openvswitch/\*(PN.log\fR است. . .IP "\fB\-\-syslog\-target=\fIhost\fB:\fIport\fR" علاوه بر لاگ سیستم، پیام‌های syslog را به پورت UDP \fIport\fR روی \fIhost\fR ارسال می‌کند. \fIhost\fR باید یک آدرس IP عددی باشد، نه یک نام میزبان. . .IP "\fB\-\-syslog\-method=\fImethod\fR" روش \fImethod\fR را برای نحوه ارسال پیام‌های syslog به دیمن syslog مشخص می‌کند. فرم‌های زیر پشتیبانی می‌شوند: .RS .IP \(bu \fBlibc\fR، از تابع \fBsyslog()\fR مربوط به libc استفاده می‌کند. نقطه ضعف استفاده از این گزینه این است که libc قبل از ارسال واقعی به دیمن syslog از طریق سوکت دامنه یونیکس \fB/dev/log\fR، یک پیشوند ثابت به هر پیام اضافه می‌کند. .IP \(bu \fBunix:\fIfile\fR\fR، مستقیماً از سوکت دامنه یونیکس استفاده می‌کند. با این گزینه می‌توان قالب پیام دلخواه را مشخص کرد. با این حال، \fBrsyslogd 8.9\fR و نسخه‌های قدیمی‌تر به هر حال از یک تابع تجزیه‌کننده از پیش کدگذاری‌شده استفاده می‌کنند که استفاده از سوکت دامنه یونیکس را محدود می‌کند. اگر می‌خواهید از قالب پیام دلخواه با نسخه‌های قدیمی‌تر \fBrsyslogd\fR استفاده کنید، به جای آن از سوکت UDP به آدرس IP لوکال‌هاست استفاده کنید. .IP \(bu \fBudp:\fIip\fR:\fIport\fR\fR، از سوکت UDP استفاده می‌کند. با این روش می‌توان از قالب پیام دلخواه با نسخه‌های قدیمی‌تر \fBrsyslogd\fR نیز استفاده کرد. هنگام ارسال پیام‌های syslog از طریق سوکت UDP باید احتیاط‌های اضافی در نظر گرفته شود، به عنوان مثال، دیمن syslog باید پیکربندی شود تا روی پورت UDP مشخص‌شده گوش دهد، قوانین تصادفی iptables می‌توانند در ترافیک syslog محلی اختلال ایجاد کنند و برخی ملاحظات امنیتی اعمال می‌شوند که برای سوکت‌های دامنه یونیکس صدق نمی‌کنند. .IP \(bu \fBnull\fR، تمام پیام‌های لاگ‌شده به syslog را دور می‌ریزد. .RE .IP مقدار پیش‌فرض از متغیر محیطی \fBOVS_SYSLOG_METHOD\fR گرفته می‌شود؛ اگر تنظیم نشده باشد، پیش‌فرض \fBlibc\fR است. .IP "\fB\-h\fR" .IQ "\fB\-\-help\fR" پیام راهنمای مختصری را در کنسول چاپ می‌کند. . .IP "\fB\-V\fR" .IQ "\fB\-\-version\fR" اطلاعات نسخه را در کنسول چاپ می‌کند. . .SH "دستورات (COMMANDS)" دستورات پیاده‌سازی‌شده توسط \fBvtep\-ctl\fR در بخش‌های زیر توضیح داده شده‌اند. . .SS "دستورات سوئیچ فیزیکی (Physical Switch Commands)" این دستورات سوئیچ‌های فیزیکی را بررسی و دستکاری می‌کنند. . .IP "[\fB\-\-may\-exist\fR] \fBadd\-ps \fIpswitch\fR" یک سوئیچ فیزیکی جدید به نام \fIpswitch\fR ایجاد می‌کند. در ابتدا سوئیچ هیچ پورتی نخواهد داشت. .IP بدون \fB\-\-may\-exist\fR، تلاش برای ایجاد سوئیچی که وجود دارد یک خطا است. با \fB\-\-may\-exist\fR، اگر \fIpswitch\fR از قبل وجود داشته باشد، این دستور کاری انجام نمی‌دهد. . .IP "[\fB\-\-if\-exists\fR] \fBdel\-ps \fIpswitch\fR" سوئیچ \fIpswitch\fR و تمام پورت‌های آن را حذف می‌کند. .IP بدون \fB\-\-if\-exists\fR، تلاش برای حذف سوئیچی که وجود ندارد یک خطا است. با \fB\-\-if\-exists\fR، تلاش برای حذف سوئیچی که وجود ندارد هیچ اثری ندارد. . .IP "\fBlist\-ps\fR" تمام سوئیچ‌های فیزیکی موجود را در خروجی استاندارد، یک مورد در هر خط، فهرست می‌کند. . .IP "\fBps\-exists \fIpswitch\fR" بررسی می‌کند که آیا \fIpswitch\fR وجود دارد یا خیر. اگر وجود داشته باشد، \fBvtep\-ctl\fR با موفقیت و با کد خروج 0 خارج می‌شود. اگر نه، \fBvtep\-ctl\fR با عدم موفقیت و با کد خروج 2 خارج می‌شود. . .SS "دستورات پورت (Port Commands)" . این دستورات پورت‌های فیزیکی VTEP را بررسی و دستکاری می‌کنند. . .IP "\fBlist\-ports \fIpswitch\fR" تمام پورت‌های درون \fIpswitch\fR را در خروجی استاندارد، یک مورد در هر خط، فهرست می‌کند. . .IP "[\fB\-\-may\-exist\fR] \fBadd\-port \fIpswitch port\fR" روی \fIpswitch\fR یک پورت جدید به نام \fIport\fR از روی دستگاه شبکه هم‌نام ایجاد می‌کند. .IP بدون \fB\-\-may\-exist\fR، تلاش برای ایجاد پورتی که وجود دارد یک خطا است. با \fB\-\-may\-exist\fR، اگر \fIport\fR از قبل روی \fIpswitch\fR وجود داشته باشد، این دستور کاری انجام نمی‌دهد. . .IP "[\fB\-\-if\-exists\fR] \fBdel\-port \fR[\fIpswitch\fR] \fIport\fR" پورت \fIport\fR را حذف می‌کند. اگر \fIpswitch\fR حذف شود، \fIport\fR از هر سوئیچی که شامل آن است حذف می‌شود؛ اگر \fIpswitch\fR مشخص شده باشد، باید سوئیچی باشد که شامل \fIport\fR است. .IP بدون \fB\-\-if\-exists\fR، تلاش برای حذف پورتی که وجود ندارد یک خطا است. با \fB\-\-if\-exists\fR، تلاش برای حذف پورتی که وجود ندارد هیچ اثری ندارد. . .SS "دستورات سوئیچ منطقی (Logical Switch Commands)" این دستورات سوئیچ‌های منطقی را بررسی و دستکاری می‌کنند. . .IP "[\fB\-\-may\-exist\fR] \fBadd\-ls \fIlswitch\fR" یک سوئیچ منطقی جدید به نام \fIlswitch\fR ایجاد می‌کند. در ابتدا سوئیچ هیچ اتصال مکانیابی (locator binding) نخواهد داشت. .IP بدون \fB\-\-may\-exist\fR، تلاش برای ایجاد سوئیچی که وجود دارد یک خطا است. با \fB\-\-may\-exist\fR، اگر \fIlswitch\fR از قبل وجود داشته باشد، این دستور کاری انجام نمی‌دهد. . .IP "[\fB\-\-if\-exists\fR] \fBdel\-ls \fIlswitch\fR" سوئیچ \fIlswitch\fR را حذف می‌کند. .IP بدون \fB\-\-if\-exists\fR، تلاش برای حذف سوئیچی که وجود ندارد یک خطا است. با \fB\-\-if\-exists\fR، تلاش برای حذف سوئیچی که وجود ندارد هیچ اثری ندارد. . .IP "\fBlist\-ls\fR" تمام سوئیچ‌های منطقی موجود را در خروجی استاندارد، یک مورد در هر خط، فهرست می‌کند. . .IP "\fBls\-exists \fIlswitch\fR" بررسی می‌کند که آیا \fIlswitch\fR وجود دارد یا خیر. اگر وجود داشته باشد، \fBvtep\-ctl\fR با موفقیت و با کد خروج 0 خارج می‌شود. اگر نه، \fBvtep\-ctl\fR با عدم موفقیت و با کد خروج 2 خارج می‌شود. . .IP "\fBbind\-ls \fIpswitch port vlan lswitch\fR" سوئیچ منطقی \fIlswitch\fR را به ترکیب \fIport\fR/\fIvlan\fR در سوئیچ فیزیکی \fIpswitch\fR متصل می‌کند. . .IP "\fBunbind\-ls \fIpswitch port vlan\fR" اتصال سوئیچ منطقی را از ترکیب \fIport\fR/\fIvlan\fR در سوئیچ فیزیکی \fIpswitch\fR حذف می‌کند. . .IP "\fBlist\-bindings \fIpswitch port\fR" اتصالات سوئیچ منطقی را برای \fIport\fR روی سوئیچ فیزیکی \fIpswitch\fR فهرست می‌کند. . .IP "\fBset\-replication\-mode \fIlswitch replication\-mode\fR" حالت تکثیر سوئیچ منطقی \fIlswitch\fR را روی \fIreplication\-mode\fR تنظیم می‌کند؛ تنها مقادیر معتبر برای حالت تکثیر "service_node" و "source_node" هستند. . برای رسیدگی به ترافیک برودکست، مالتی‌کست و یونیکست ناشناخته لایه ۲ (L2)، بسته‌ها می‌توانند به تمام اعضای یک سوئیچ منطقی که توسط یک سوئیچ فیزیکی ارجاع داده شده ارسال شوند. حالت‌های مختلفی برای تکثیر بسته‌ها وجود دارد. حالت پیش‌فرض تکثیر، ارسال ترافیک به یک گره سرویس (service node) است که می‌تواند یک هایپروایزر، سرور یا اپلاینس باشد، و به گره سرویس اجازه دهد تکثیر را به سایر گره‌های انتقال (هایپروایزرها یا سایر سوئیچ‌های فیزیکی VTEP) انجام دهد. این حالت، تکثیر گره سرویس (service node replication) نامیده می‌شود. یک حالت جایگزین برای تکثیر، به نام تکثیر گره مبدأ (source node replication)، شامل ارسال بسته توسط گره مبدأ به تمام گره‌های انتقال دیگر است. هایپروایزرها در هر دو حالت همیشه مسئول انجام تکثیر خود برای ماشین‌های مجازی محلی متصل هستند. اگر حالت تکثیر به‌طور صریح تنظیم نشده باشد، حالت گره سرویس پیش‌فرض است. حالت تکثیر گره سرویس یک نیاز اساسی تلقی می‌شود زیرا فقط به ارسال بسته به یک گره انتقال واحد نیاز دارد. . .IP "\fBget\-replication\-mode \fIlswitch\fR" حالت تکثیر سوئیچ منطقی \fIlswitch\fR را دریافت می‌کند. تنها مقادیر معتبر برای حالت تکثیر "service_node" و "source_node" هستند. یک پاسخ خالی برای حالت تکثیر به معنای پیش‌فرض بودن "service_node" است. . .SS "دستورات روتر منطقی (Logical Router Commands)" این دستورات روترهای منطقی را بررسی و دستکاری می‌کنند. . .IP "[\fB\-\-may\-exist\fR] \fBadd\-lr \fIlrouter\fR" یک روتر منطقی جدید به نام \fIlrouter\fR ایجاد می‌کند. .IP بدون \fB\-\-may\-exist\fR، تلاش برای ایجاد روتری که وجود دارد یک خطا است. با \fB\-\-may\-exist\fR، اگر \fIlrouter\fR از قبل وجود داشته باشد، این دستور کاری انجام نمی‌دهد. . .IP "[\fB\-\-if\-exists\fR] \fBdel\-lr \fIlrouter\fR" روتر \fIlrouter\fR را حذف می‌کند. .IP بدون \fB\-\-if\-exists\fR، تلاش برای حذف روتری که وجود ندارد یک خطا است. با \fB\-\-if\-exists\fR، تلاش برای حذف روتری که وجود ندارد هیچ اثری ندارد. . .IP "\fBlist\-lr\fR" تمام روترهای منطقی موجود را در خروجی استاندارد، یک مورد در هر خط، فهرست می‌کند. . .IP "\fBlr\-exists \fIlrouter\fR" بررسی می‌کند که آیا \fIlrouter\fR وجود دارد یا خیر. اگر وجود داشته باشد، \fBvtep\-ctl\fR با موفقیت و با کد خروج 0 خارج می‌شود. اگر نه، \fBvtep\-ctl\fR با عدم موفقیت و با کد خروج 2 خارج می‌شود. . .SS "دستورات اتصال مک محلی (Local MAC Binding Commands)" این دستورات اتصال‌های محلی MAC را برای سوئیچ منطقی بررسی و دستکاری می‌کنند. نگاشت‌های محلی توسط VTEP نوشته می‌شوند تا به آدرس‌های MAC که روی پورت‌های فیزیکی خود یاد گرفته ارجاع داده شود. . .IP "\fBadd\-ucast\-local \fIlswitch mac\fR [\fIencap\fR] \fIip\fR" آدرس اترنت یونیکست \fImac\fR را با استفاده از کپسوله‌سازی \fIencap\fR در \fIlswitch\fR به مکان فیزیکی \fIip\fR نگاشت می‌کند. اگر \fIencap\fR مشخص نشده باشد، پیش‌فرض "vxlan_over_ipv4" است. نگاشت‌های محلی توسط VTEP برای ارجاع به آدرس‌های MAC یاد گرفته شده در پورت‌های فیزیکی آن استفاده می‌شوند. . .IP "\fBdel\-ucast\-local \fIlswitch mac\fR" نگاشت محلی آدرس اترنت یونیکست \fImac\fR را از \fIlswitch\fR حذف می‌کند. نگاشت‌های محلی توسط VTEP برای ارجاع به آدرس‌های MAC یاد گرفته شده در پورت‌های فیزیکی آن استفاده می‌شوند. . .IP "\fBadd\-mcast\-local \fIlswitch mac\fR [\fIencap\fR] \fIip\fR" مکان فیزیکی \fIip\fR را با استفاده از کپسوله‌سازی \fIencap\fR به جدول اتصال MAC محلی برای آدرس اترنت مالتی‌کست \fImac\fR در \fIlswitch\fR اضافه می‌کند. اگر \fIencap\fR مشخص نشده باشد، پیش‌فرض "vxlan_over_ipv4" است. نگاشت‌های محلی توسط VTEP برای ارجاع به آدرس‌های MAC یاد گرفته شده در پورت‌های فیزیکی آن استفاده می‌شوند. . .IP "\fBdel\-mcast\-local \fIlswitch mac\fR [\fIencap\fR] \fIip\fR" مکان فیزیکی \fIip\fR را با استفاده از کپسوله‌سازی \fIencap\fR از جدول اتصال MAC محلی برای آدرس اترنت مالتی‌کست \fImac\fR در \fIlswitch\fR حذف می‌کند. اگر \fIencap\fR مشخص نشده باشد، پیش‌فرض "vxlan_over_ipv4" است. نگاشت‌های محلی توسط VTEP برای ارجاع به آدرس‌های MAC یاد گرفته شده در پورت‌های فیزیکی آن استفاده می‌شوند. . .IP "\fBclear\-local\-macs \fIlswitch\fR" اتصال‌های MAC محلی را برای \fIlswitch\fR پاک می‌کند. . .IP "\fBlist\-local\-macs \fIlswitch\fR" اتصال‌های MAC محلی را برای \fIlswitch\fR، یک مورد در هر خط، فهرست می‌کند. . .SS "دستورات اتصال مک راه دور (Remote MAC Binding Commands)" این دستورات اتصال‌های محلی و راه دور MAC را برای سوئیچ منطقی بررسی و دستکاری می‌کنند. نگاشت‌های راه دور توسط کنترلر مجازی‌سازی شبکه نوشته می‌شوند تا به آدرس‌های MAC که یاد گرفته است ارجاع داده شود. . .IP "\fBadd\-ucast\-remote \fIlswitch mac\fR [\fIencap\fR] \fIip\fR" آدرس اترنت یونیکست \fImac\fR را با استفاده از کپسوله‌سازی \fIencap\fR در \fIlswitch\fR به مکان فیزیکی \fIip\fR نگاشت می‌کند. اگر \fIencap\fR مشخص نشده باشد، پیش‌فرض "vxlan_over_ipv4" است. نگاشت‌های راه دور توسط بستر مجازی‌سازی شبکه برای ارجاع به آدرس‌های MAC یاد گرفته شده استفاده می‌شوند. . .IP "\fBdel\-ucast\-remote \fIlswitch mac\fR" نگاشت راه دور آدرس اترنت یونیکست \fImac\fR را از \fIlswitch\fR حذف می‌کند. نگاشت‌های راه دور توسط بستر مجازی‌سازی شبکه برای ارجاع به آدرس‌های MAC یاد گرفته شده استفاده می‌شوند. . .IP "\fBadd\-mcast\-remote \fIlswitch mac\fR [\fIencap\fR] \fIip\fR" مکان فیزیکی \fIip\fR را با استفاده از کپسوله‌سازی \fIencap\fR به جدول اتصال MAC راه دور برای آدرس اترنت مالتی‌کست \fImac\fR در \fIlswitch\fR اضافه می‌کند. اگر \fIencap\fR مشخص نشده باشد، پیش‌فرض "vxlan_over_ipv4" است. نگاشت‌های راه دور توسط بستر مجازی‌سازی شبکه برای ارجاع به آدرس‌های MAC یاد گرفته شده استفاده می‌شوند. . .IP "\fBdel\-mcast\-remote \fIlswitch mac\fR [\fIencap\fR] \fIip\fR" مکان فیزیکی \fIip\fR را با استفاده از کپسوله‌سازی \fIencap\fR از جدول اتصال MAC راه دور برای آدرس اترنت مالتی‌کست \fImac\fR در \fIlswitch\fR حذف می‌کند. اگر \fIencap\fR مشخص نشده باشد، پیش‌فرض "vxlan_over_ipv4" است. نگاشت‌های راه دور توسط بستر مجازی‌سازی شبکه برای ارجاع به آدرس‌های MAC یاد گرفته شده استفاده می‌شوند. . .IP "\fBclear\-remote\-macs \fIlswitch\fR" اتصال‌های MAC راه دور را برای \fIlswitch\fR پاک می‌کند. . .IP "\fBlist\-remote\-macs \fIlswitch\fR" اتصال‌های MAC راه دور را برای \fIlswitch\fR، یک مورد در هر خط، فهرست می‌کند. . .SS "اتصال مدیر (Manager Connectivity)" . این دستورات ستون \fBmanagers\fR را در جدول \fBGlobal\fR و سطرها را در جدول \fBManagers\fR دستکاری می‌کنند. هنگامی که \fBovsdb\-server\fR برای استفاده از ستون \fBmanagers\fR برای اتصالات OVSDB پیکربندی شده باشد (همان‌طور که در اسکریپت‌های راه‌اندازی ارائه‌شده با Open vSwitch توضیح داده شده است)، این قابلیت به مدیر سیستم اجازه می‌دهد تا از \fBvtep\-ctl\fR برای پیکربندی اتصالات پایگاه‌داده استفاده کند. . .IP "\fBget\-manager\fR" مدیر(ان) پیکربندی‌شده را چاپ می‌کند. . .IP "\fBdel\-manager\fR" مدیر(ان) پیکربندی‌شده را حذف می‌کند. . .IP "\fBset\-manager\fR \fItarget\fR\&..." مقصد یا مقاصد مدیر پیکربندی‌شده را تنظیم می‌کند. هر \fItarget\fR می‌تواند یک روش اتصال فعال یا غیرفعال OVSDB باشد، مانند \fBpssl:6640\fR، همان‌طور که در \fBovsdb\fR(7) توصیف شده است. . .SS "دستورات پایگاه‌داده (Database Commands)" . این دستورات محتویات جداول \fBovsdb\fR را پرس‌وجو و اصلاح می‌کنند. آن‌ها انتزاع مختصری از رابط \fBovsdb\fR هستند و به همین دلیل در سطحی پایین‌تر از سایر دستورات \fBvtep\-ctl\fR عمل می‌کنند. .PP .ST "شناسایی جداول، رکوردها و ستون‌ها" .PP هر یک از این دستورات دارای پارامتر \fItable\fR برای شناسایی یک جدول درون پایگاه‌داده است. بسیاری از آن‌ها پارامتر \fIrecord\fR را نیز می‌گیرند که یک رکورد خاص را درون یک جدول شناسایی می‌کند. پارامتر \fIrecord\fR می‌تواند UUID یک رکورد باشد، و بسیاری از جداول روش‌های اضافی را برای شناسایی رکوردها ارائه می‌دهند. برخی از دستورات همچنین پارامترهای \fIcolumn\fR را می‌گیرند که یک فیلد خاص را درون رکوردهای یک جدول مشخص می‌کند. .PP جداول زیر در حال حاضر تعریف شده‌اند: .IP "\fBGlobal\fR" پیکربندی سطح بالا برای یک VTEP سخت‌افزاری. این جدول دقیقاً شامل یک رکورد است که با مشخص کردن \fB.\fR به عنوان نام رکورد شناسایی می‌شود. .IP "\fBManager\fR" پیکربندی برای یک اتصال OVSDB. رکوردها ممکن است بر اساس مقصد (مثلاً \fBtcp:1.2.3.4\fR) شناسایی شوند. .IP "\fBPhysical_Switch\fR" یک سوئیچ فیزیکی که یک VTEP را پیاده‌سازی می‌کند. رکوردها ممکن است بر اساس نام سوئیچ فیزیکی شناسایی شوند. .IP "\fBPhysical_Port\fR" یک پورت درون یک سوئیچ فیزیکی. .IP "\fBLogical_Binding_Stats\fR" آمار سوئیچ منطقی را که یک VLAN روی پورت فیزیکی با آن مرتبط است، گزارش می‌دهد. .IP "\fBLogical_Switch\fR" یک سوئیچ اترنت منطقی. رکوردها ممکن است بر اساس نام سوئیچ منطقی شناسایی شوند. .IP "\fBUcast_Macs_Local\fR" نگاشت آدرس‌های MAC یونیکست محلی کشف‌شده به تونل‌ها. .IP "\fBUcast_Macs_Remote\fR" نگاشت آدرس‌های MAC یونیکست برنامه‌ریزی‌شده از راه دور به تونل‌ها. .IP "\fBMcast_Macs_Local\fR" نگاشت آدرس‌های MAC مالتی‌کست محلی کشف‌شده به تونل‌ها. .IP "\fBMcast_Macs_Remote\fR" نگاشت آدرس‌های MAC مالتی‌کست برنامه‌ریزی‌شده از راه دور به تونل‌ها. .IP "\fBPhysical_Locator_Set\fR" مجموعه‌ای از یک یا چند مکان‌یاب فیزیکی. .IP "\fBPhysical_Locator\fR" نقطه پایانی را شناسایی می‌کند که ترافیک سوئیچ منطقی ممکن است به آن کپسوله و فوروارد شود. رکوردها ممکن است بر اساس نام مکان‌یاب فیزیکی شناسایی شوند. .PP نام‌های رکوردها باید به طور کامل و با رعایت بزرگی و کوچکی حروف مشخص شوند، به جز اینکه UUIDها را می‌توان به ۴ رقم هگزادسیمال اول (یا بیشتر) خلاصه کرد، تا زمانی که در جدول یکتا باشد. نام‌های جداول و ستون‌ها به بزرگی و کوچکی حروف حساس نیستند، و با \fB\-\fR و \fB_\fR به جای یکدیگر رفتار می‌شود. اختصارات یکتا از نام جداول و ستون‌ها قابل قبول است، به عنوان مثال \fBman\fR یا \fBm\fR برای شناسایی جدول \fBManager\fR کافی است. . .ST "مقادیر پایگاه‌داده" .PP هر ستون در پایگاه‌داده نوع ثابتی از داده‌ها را می‌پذیرد. انواع پایه‌ای که در حال حاضر تعریف شده‌اند، و بازنمایی آن‌ها، عبارتند از: .IP "integer" یک عدد صحیح ده‌دهی در محدوده \-2**63 تا 2**63\-1، شامل هر دو. .IP "real" یک عدد ممیز شناور. .IP "Boolean" درست یا نادرست، به ترتیب به صورت \fBtrue\fR یا \fBfalse\fR نوشته می‌شود. .IP "string" یک رشته یونیکد دلخواه، با این استثنا که بایت‌های null مجاز نیستند. برای اکثر رشته‌هایی که با یک حرف انگلیسی یا زیرخط شروع می‌شوند و فقط شامل حروف، زیرخط، خط تیره و نقطه هستند، نقل‌قول اختیاری است. با این حال، \fBtrue\fR و \fBfalse\fR و رشته‌هایی که با ساختار UUIDها مطابقت دارند (به زیر مراجعه کنید) باید در گیومه دوتایی قرار گیرند تا از سایر انواع پایه متمایز شوند. هنگامی که گیومه دوتایی استفاده می‌شود، نحو شبیه به رشته‌ها در JSON است، مثلاً ممکن است از بک‌اسلش برای اسکیپ کردن کاراکترهای خاص استفاده شود. رشته خالی باید به صورت یک جفت گیومه دوتایی (\fB""\fR) نمایش داده شود. .IP "UUID" یا یک شناسه جهانی یکتا به سبک RFC 4122، مثلاً \fBf81d4fae\-7dec\-11d0\-a765\-00a0c91e6bf6\fR، یا یک \fB@\fIname\fR تعریف شده توسط یک دستور \fBget\fR یا \fBcreate\fR در همان فراخوانی \fB\*(PN\fR. .PP چندین مقدار در یک ستون واحد را می‌توان با فاصله یا یک کاما جدا کرد. هنگامی که چندین مقدار وجود دارد، مقادیر تکراری مجاز نیستند، و ترتیب اهمیتی ندارد. برعکس، برخی از ستون‌های پایگاه‌داده می‌توانند مجموعه خالی از مقادیر داشته باشند که به صورت \fB[]\fR نمایش داده می‌شود، و براکت‌های چهارگوش می‌توانند به صورت اختیاری سایر مجموعه‌های غیرخالی یا مقادیر تکی را نیز در بر گیرند. برای ستونی که مجموعه‌ای از اعداد صحیح را می‌پذیرد، دستورات پایگاه‌داده یک محدوده را می‌پذیرند. یک محدوده با دو عدد صحیح که با \fB-\fR از هم جدا شده‌اند نشان داده می‌شود. یک محدوده شامل نقاط ابتدا و انتها است. حداکثر اندازه یک محدوده 4096 عنصر است. اگر به عناصر بیشتری نیاز باشد، می‌توان آن‌ها را در محدوده‌های جداگانه مشخص کرد. .PP تعداد کمی از ستون‌های پایگاه‌داده «نگاشت‌ها»یی (maps) از جفت‌های کلید-مقدار هستند، که در آن کلید و مقدار هر کدام یک نوع داده ثابت در پایگاه‌داده هستند. این موارد به شکل \fIkey\fB=\fIvalue\fR مشخص می‌شوند، جایی که \fIkey\fR و \fIvalue\fR به ترتیب از نحو نوع کلید و نوع مقدار ستون پیروی می‌کنند. هنگامی که چندین جفت وجود دارد (که با فاصله یا کاما جدا شده‌اند)، کلیدهای تکراری مجاز نیستند، و باز هم ترتیب اهمیتی ندارد. مقادیر تکراری مجاز هستند. یک نگاشت خالی به صورت \fB{}\fR نمایش داده می‌شود. آکولادها می‌توانند به صورت اختیاری نگاشت‌های غیرخالی را نیز در بر گیرند (اما برای جلوگیری از گسترش \fBother-config={0=x,1=y}\fR به \fBother-config=0=x other-config=1=y\fR توسط پوسته، از نقل‌قول استفاده کنید، که ممکن است اثر مطلوبی نداشته باشد). . .ST "نحو دستورات پایگاه‌داده" . .IP "[\fB\-\-if\-exists\fR] [\fB\-\-columns=\fIcolumn\fR[\fB,\fIcolumn\fR]...] \fBlist \fItable \fR[\fIrecord\fR]..." داده‌ها را در هر \fIrecord\fR مشخص‌شده فهرست می‌کند. اگر رکوردی مشخص نشده باشد، تمام رکوردهای موجود در \fItable\fR را فهرست می‌کند. .IP اگر \fB\-\-columns\fR مشخص شده باشد، فقط ستون‌های درخواستی، به ترتیب مشخص‌شده فهرست می‌شوند. در غیر این صورت، تمام ستون‌ها به ترتیب الفبایی بر اساس نام ستون فهرست می‌شوند. .IP بدون \fB\-\-if-exists\fR، اگر هر یک از \fIrecord\fRهای مشخص‌شده وجود نداشته باشد، یک خطا محسوب می‌شود. با \fB\-\-if-exists\fR، دستور هر \fIrecord\fR را که وجود ندارد نادیده می‌گیرد، بدون اینکه خروجی تولید کند. . .IP "[\fB\-\-columns=\fIcolumn\fR[\fB,\fIcolumn\fR]...] \fBfind \fItable \fR[\fIcolumn\fR[\fB:\fIkey\fR]\fB=\fIvalue\fR]..." داده‌ها را در هر رکوردی در \fItable\fR فهرست می‌کند که \fIcolumn\fR آن برابر با \fIvalue\fR باشد، یا اگر \fIkey\fR مشخص شده باشد، \fIcolumn\fR آن شامل یک \fIkey\fR با \fIvalue\fR مشخص‌شده باشد. عملگرهای زیر ممکن است در جایی که \fB=\fR در خلاصه نحو نوشته شده استفاده شوند: .RS .IP "\fB= != < > <= >=\fR" رکوردهایی را انتخاب می‌کند که در آن‌ها \fIcolumn\fR[\fB:\fIkey\fR] به ترتیب برابر، نابرابر، کمتر از، بیشتر از، کمتر یا مساوی، یا بیشتر یا مساوی با \fIvalue\fR باشد. .IP مقادیر \fIcolumn\fR[\fB:\fIkey\fR] و \fIvalue\fR را به عنوان مجموعه‌هایی از عناصر در نظر بگیرید. مجموعه‌های یکسان، برابر در نظر گرفته می‌شوند. در غیر این صورت، اگر مجموعه‌ها تعداد عناصر متفاوتی داشته باشند، مجموعه‌ای که عناصر بیشتری دارد بزرگتر در نظر گرفته می‌شود. در غیر این صورت، عنصری از هر مجموعه را به صورت جفت به جفت، به ترتیب صعودی درون هر مجموعه در نظر بگیرید. اولین جفتی که متفاوت باشد نتیجه را تعیین می‌کند. (برای ستونی که شامل جفت‌های کلید-مقدار است، ابتدا همه کلیدها مقایسه می‌شوند و مقادیر تنها در صورتی در نظر گرفته می‌شوند که دو مجموعه حاوی کلیدهای یکسان باشند.) .IP "\fB{=} {!=}\fR" به ترتیب برای برابری یا نابرابری مجموعه‌ها آزمایش می‌کند. .IP "\fB{<=}\fR" رکوردهایی را انتخاب می‌کند که در آن‌ها \fIcolumn\fR[\fB:\fIkey\fR] زیرمجموعه‌ای از \fIvalue\fR باشد. به عنوان مثال، \fBflood-vlans{<=}1,2\fR رکوردهایی را انتخاب می‌کند که در آن‌ها ستون \fBflood-vlans\fR مجموعه خالی باشد یا شامل 1 یا 2 یا هر دو باشد. .IP "\fB{<}\fR" رکوردهایی را انتخاب می‌کند که در آن‌ها \fIcolumn\fR[\fB:\fIkey\fR] یک زیرمجموعه سره از \fIvalue\fR باشد. به عنوان مثال، \fBflood-vlans{<}1,2\fR رکوردهایی را انتخاب می‌کند که در آن‌ها ستون \fBflood-vlans\fR مجموعه خالی باشد یا شامل 1 یا 2 باشد اما نه هر دو. .IP "\fB{>=} {>}\fR" مشابه \fB{<=}\fR و \fB{<}\fR است، به جز اینکه رابطه معکوس است. به عنوان مثال، \fBflood-vlans{>=}1,2\fR رکوردهایی را انتخاب می‌کند که در آن‌ها ستون \fBflood-vlans\fR شامل هر دوی 1 و 2 باشد. .PP عملگرهای زیر فقط در Open vSwitch نسخه 2.16 و بالاتر در دسترس هستند: .IP "\fB{in}\fR" رکوردهایی را انتخاب می‌کند که در آن‌ها هر عنصر در \fIcolumn\fR[\fB:\fIkey\fR] در \fIvalue\fR نیز وجود داشته باشد. (این همانند \fB{<=}\fR است.) .IP "\fB{not-in}\fR" رکوردهایی را انتخاب می‌کند که در آن‌ها هر عنصر در \fIcolumn\fR[\fB:\fIkey\fR] در \fIvalue\fR نباشد. .RE .IP برای عملگرهای حسابی (\fB= != < > <= >=\fR)، هنگامی که \fIkey\fR مشخص شده باشد اما \fIcolumn\fR یک رکورد خاص شامل \fIkey\fR نباشد، آن رکورد همیشه از نتایج حذف می‌شود. بنابراین، شرط \fBother-config:mtu!=1500\fR با رکوردهایی مطابقت دارد که کلید \fBmtu\fR با مقداری غیر از 1500 دارند، اما با رکوردهایی که فاقد کلید \fBmtu\fR هستند مطابقت ندارد. .IP برای عملگرهای مجموعه، هنگامی که \fIkey\fR مشخص شده باشد اما \fIcolumn\fR یک رکورد خاص حاوی \fIkey\fR نباشد، مقایسه در برابر یک مجموعه خالی انجام می‌شود. بنابراین، شرط \fBother-config:mtu{!=}1500\fR با رکوردهایی که دارای کلید \fBmtu\fR با مقداری غیر از 1500 هستند و همچنین رکوردهایی که فاقد کلید \fBmtu\fR هستند مطابقت دارد. .IP فراموش نکنید که \fB<\fR یا \fB>\fR را اسکیپ کنید تا توسط پوسته تفسیر نشوند. .IP اگر \fB\-\-columns\fR مشخص شده باشد، فقط ستون‌های درخواستی، به ترتیب مشخص‌شده فهرست می‌شوند. در غیر این صورت تمام ستون‌ها به ترتیب الفبایی بر اساس نام ستون فهرست می‌شوند. .IP شناسه‌های UUID نمایش داده شده برای سطرهای ایجاد شده در همان فراخوانی \fB\*(PN\fR نادرست خواهند بود. . .IP "[\fB\-\-if\-exists\fR] [\fB\-\-id=@\fIname\fR] \fBget \fItable record \fR[\fIcolumn\fR[\fB:\fIkey\fR]]..." مقدار هر \fIcolumn\fR مشخص‌شده در \fIrecord\fR داده شده در \fItable\fR را چاپ می‌کند. برای ستون‌های نگاشت (map)، ممکن است یک \fIkey\fR به صورت اختیاری مشخص شود، که در این صورت مقدار مرتبط با \fIkey\fR در ستون به جای کل نگاشت چاپ می‌شود. .IP بدون \fB\-\-if\-exists\fR، اگر \fIrecord\fR وجود نداشته باشد یا \fIkey\fR مشخص شده باشد اما در \fIrecord\fR وجود نداشته باشد، یک خطا است. با \fB\-\-if\-exists\fR، یک \fIrecord\fR ناموجود هیچ خروجی تولید نمی‌کند و یک \fIkey\fR ناموجود یک خط خالی چاپ می‌کند. .IP اگر \fB@\fIname\fR مشخص شده باشد، می‌توان بعداً در همان فراخوانی \fB\*(PN\fR در زمینه‌هایی که UUID انتظار می‌رود، با آن نام به UUID مربوط به \fIrecord\fR ارجاع داد. .IP هر دو آرگومان \fB\-\-id\fR و \fIcolumn\fR اختیاری هستند، اما معمولاً باید حداقل یکی یا دیگری مشخص شود. اگر هر دو حذف شوند، \fBget\fR هیچ اثری به جز تأیید وجود \fIrecord\fR در \fItable\fR ندارد. .IP گزینه‌های \fB\-\-id\fR و \fB\-\-if\-exists\fR نمی‌توانند با هم استفاده شوند. . .IP "[\fB\-\-if\-exists\fR] \fBset \fItable record column\fR[\fB:\fIkey\fR]\fB=\fIvalue\fR..." مقدار هر \fIcolumn\fR مشخص‌شده در \fIrecord\fR داده شده در \fItable\fR را به \fIvalue\fR تنظیم می‌کند. برای ستون‌های نگاشت، ممکن است یک \fIkey\fR به صورت اختیاری مشخص شود، که در این صورت مقدار مرتبط با \fIkey\fR در آن ستون تغییر می‌کند (یا اگر وجود نداشته باشد، اضافه می‌شود)، به جای کل نگاشت. .IP بدون \fB\-\-if-exists\fR، اگر \fIrecord\fR وجود نداشته باشد یک خطا است. با \fB\-\-if-exists\fR، اگر \fIrecord\fR وجود نداشته باشد این دستور کاری انجام نمی‌دهد. . .IP "[\fB\-\-if\-exists\fR] \fBadd \fItable record column \fR[\fIkey\fB=\fR]\fIvalue\fR..." مقدار یا جفت کلید-مقدار مشخص‌شده را به \fIcolumn\fR در \fIrecord\fR در \fItable\fR اضافه می‌کند. اگر \fIcolumn\fR یک نگاشت باشد، \fIkey\fR الزامی است، در غیر این صورت ممنوع است. اگر \fIkey\fR از قبل در یک ستون نگاشت وجود داشته باشد، مقدار فعلی \fIvalue\fR جایگزین نمی‌شود (برای جایگزینی یک مقدار موجود از دستور \fBset\fR استفاده کنید). .IP بدون \fB\-\-if-exists\fR، اگر \fIrecord\fR وجود نداشته باشد یک خطا است. با \fB\-\-if-exists\fR، اگر \fIrecord\fR وجود نداشته باشد این دستور کاری انجام نمی‌دهد. . .IP "[\fB\-\-if\-exists\fR] \fBremove \fItable record column \fR\fIvalue\fR..." .IQ "[\fB\-\-if\-exists\fR] \fBremove \fItable record column \fR\fIkey\fR..." .IQ "[\fB\-\-if\-exists\fR] \fBremove \fItable record column \fR\fIkey\fB=\fR\fIvalue\fR..." مقادیر یا جفت‌های کلید-مقدار مشخص‌شده را از \fIcolumn\fR در \fIrecord\fR در \fItable\fR حذف می‌کند. فرم اول برای ستون‌هایی اعمال می‌شود که نگاشت نیستند: هر \fIvalue\fR مشخص‌شده از ستون حذف می‌شود. فرم دوم و سوم برای ستون‌های نگاشت اعمال می‌شود: اگر فقط یک \fIkey\fR مشخص شده باشد، هر جفت کلید-مقدار با \fIkey\fR داده شده بدون در نظر گرفتن مقدار آن حذف می‌شود؛ اگر یک \fIvalue\fR داده شود، یک جفت تنها در صورتی حذف می‌شود که هم کلید و هم مقدار مطابقت داشته باشند. .IP اگر ستون شامل کلید یا مقدار یا جفت مشخص‌شده نباشد، خطا نیست. .IP بدون \fB\-\-if-exists\fR، اگر \fIrecord\fR وجود نداشته باشد یک خطا است. با \fB\-\-if-exists\fR، اگر \fIrecord\fR وجود نداشته باشد این دستور کاری انجام نمی‌دهد. . .IP "[\fB\-\-if\-exists\fR] \fBclear\fR \fItable record column\fR..." هر \fIcolumn\fR را در \fIrecord\fR در \fItable\fR حسب مورد روی مجموعه خالی یا نگاشت خالی تنظیم می‌کند. این دستور فقط برای ستون‌هایی اعمال می‌شود که مجاز به خالی بودن هستند. .IP بدون \fB\-\-if-exists\fR، اگر \fIrecord\fR وجود نداشته باشد یک خطا است. با \fB\-\-if-exists\fR، اگر \fIrecord\fR وجود نداشته باشد این دستور کاری انجام نمی‌دهد. . .IP "[\fB\-\-id=(@\fIname\fR | \fIuuid\fR] \fBcreate\fR \fItable column\fR[\fB:\fIkey\fR]\fB=\fIvalue\fR..." یک رکورد جدید در \fItable\fR ایجاد می‌کند و مقادیر اولیه هر \fIcolumn\fR را تنظیم می‌کند. ستون‌هایی که به صراحت تنظیم نشده‌اند مقادیر پیش‌فرض خود را دریافت خواهند کرد. شناسه UUID سطر جدید را خروجی می‌دهد. .IP اگر \fB@\fIname\fR مشخص شده باشد، می‌توان به شناسه UUID سطر جدید با آن نام در جای دیگری در همان فراخوانی \fB\*(PN\fR در زمینه‌هایی که انتظار یک UUID می‌رود، ارجاع داد. چنین مراجعی ممکن است قبل یا بعد از دستور \fBcreate\fR بیایند. .IP اگر یک \fIuuid\fR معتبر مشخص شده باشد، به عنوان UUID سطر جدید استفاده می‌شود. . .RS .IP "هشدار (ovs-vsctl به عنوان مثال)" رکوردها در پایگاه‌داده Open vSwitch فقط زمانی مهم هستند که بتوان به‌طور مستقیم یا غیرمستقیم از جدول \fBOpen_vSwitch\fR به آن‌ها دسترسی پیدا کرد. به جز رکوردهای موجود در جداول \fBQoS\fR یا \fBQueue\fR، رکوردهایی که از جدول \fBOpen_vSwitch\fR قابل دسترسی نباشند، به‌طور خودکار از پایگاه‌داده حذف می‌شوند. این حذف بلافاصله و بدون انتظار برای دستورات اضافی \fBovs\-vsctl\fR یا سایر فعالیت‌های پایگاه‌داده اتفاق می‌افتد. بنابراین، یک دستور \fBcreate\fR معمولاً باید همراه با دستورات اضافی \fIدر همان فراخوانی \fBovs\-vsctl\fR باشد تا زنجیره‌ای از ارجاعات به رکورد تازه‌ایجادشده از رکورد سطح بالای \fBOpen_vSwitch\fR اضافه شود. بخش \fBمثال‌ها (EXAMPLES)\fR چند مثال ارائه می‌دهد که نحوه انجام این کار را نشان می‌دهند. .RE . .IP "\fR[\fB\-\-if\-exists\fR] \fBdestroy \fItable record\fR..." هر \fIrecord\fR مشخص‌شده را از \fItable\fR حذف می‌کند. مگر اینکه \fB\-\-if\-exists\fR مشخص شده باشد، هر \fIrecord\fR باید وجود داشته باشد. .IP "\fB\-\-all destroy \fItable\fR" تمام رکوردها را از \fItable\fR حذف می‌کند. . .RS .IP "هشدار (ovs-vsctl به عنوان مثال)" دستور \fBdestroy\fR فقط برای رکوردهای موجود در جداول \fBQoS\fR یا \fBQueue\fR مفید است. رکوردهای موجود در سایر جداول هنگام عدم دسترسی از جدول \fBOpen_vSwitch\fR به‌طور خودکار از پایگاه‌داده حذف می‌شوند. این بدان معناست که حذف آخرین ارجاع به یک رکورد برای حذف خود رکورد کافی است. برای رکوردهای موجود در این جداول، \fBdestroy\fR بدون هشدار نادیده گرفته می‌شود. برای اطلاعات بیشتر به بخش \fBمثال‌ها (EXAMPLES)\fR در زیر مراجعه کنید. .RE . .IP "\fBwait\-until \fItable record \fR[\fIcolumn\fR[\fB:\fIkey\fR]\fB=\fIvalue\fR]..." صبر می‌کند تا \fItable\fR شامل رکوردی به نام \fIrecord\fR باشد که \fIcolumn\fR آن برابر با \fIvalue\fR باشد یا اگر \fIkey\fR مشخص شده باشد، \fIcolumn\fR آن شامل یک \fIkey\fR با \fIvalue\fR مشخص‌شده باشد. این دستور از همان عملگرها و معانی توصیف‌شده برای دستور \fBfind\fR در بالا پشتیبانی می‌کند. .IP اگر هیچ آرگومان \fIcolumn\fR[\fB:\fIkey\fR]\fB=\fIvalue\fR داده نشود، این دستور فقط تا زمانی که \fIrecord\fR وجود داشته باشد صبر می‌کند. اگر بیش از یک آرگومان داده شود، دستور تا زمانی که همه آن‌ها برآورده شوند صبر می‌کند. . .RS .IP "هشدار (ovs-vsctl به عنوان مثال)" معمولاً \fBwait\-until\fR باید در ابتدای مجموعه‌ای از دستورات \fBovs\-vsctl\fR قرار گیرد. به عنوان مثال، \fBwait\-until bridge br0 \-\- get bridge br0 datapath_id\fR صبر می‌کند تا پلی به نام \fBbr0\fR ایجاد شود، سپس ستون \fBdatapath_id\fR آن را چاپ می‌کند، در حالی که \fBget bridge br0 datapath_id \-\- wait\-until bridge br0\fR اگر هنگام اتصال اولیه \fBovs\-vsctl\fR به پایگاه‌داده، پلی به نام \fBbr0\fR وجود نداشته باشد، لغو خواهد شد. .RE .IP برای جلوگیری از پایان یافتن \fB\*(PN\fR پس از حداکثر ۵ ثانیه انتظار، استفاده از \fB\-\-timeout=0\fR را همراه با \fB\-\-wait\-until\fR در نظر بگیرید. .IP "\fBcomment \fR[\fIarg\fR]..." این دستور هیچ تأثیری بر رفتار برنامه ندارد، اما هر رکورد لاگ پایگاه‌داده که توسط دستور ایجاد شود شامل این دستور و آرگومان‌های آن خواهد بود. .PP .SH "کد خروج (EXIT STATUS)" .IP "0" اجرای موفقیت‌آمیز برنامه. .IP "1" خطای کاربرد، نحو، یا فایل پیکربندی. .IP "2" آرگومان \fIswitch\fR برای \fBps\-exists\fR نام سوئیچ فیزیکی را مشخص کرده است که وجود ندارد. .SH "همچنین ببینید (SEE ALSO)" . .BR ovsdb\-server (1), .BR vtep (5).