2
0
mirror of https://github.com/openvswitch/ovs synced 2025-10-25 15:07:05 +00:00
Commit Graph

435 Commits

Author SHA1 Message Date
Pravin B Shelar
2b02d770c4 openvswitch: Allow external IPsec tunnel management.
OVS GRE IPsec tunnel support has multiple issues, Therefore
it was deprecated in OVS 2.6.

Following patch removes support for GRE IPsec and allows external
IPsec tunnel management for any type of tunnel not just GRE.
e.g. user can encrypt Geneve or VxLan traffic.

It can be done by using openflow pipeline to set skb-mark
and using IPsec keying daemons to implement IPsec tunnels.
This packet can be matched for the skb-mark to encrypt
selective tunnel traffic.

VMware-BZ: 1710701
Signed-off-by: Pravin B Shelar <pshelar@ovn.org>
Acked-by: Ansis Atteka <aatteka@ovn.org>
2016-09-27 11:06:09 -07:00
Pravin B Shelar
9e9d038491 openvswitch: deprecates support for IPsec tunnel port.
OVS IPsec tunnel support has issues:
1. It only works for GRE.
2. only works on Debian.
3. It does not allow user to match on packet-mark
   on packet received on tunnel ports.

This patch deprecates support for IPsec tunnel port.

Signed-off-by: Pravin B Shelar <pshelar@ovn.org>
Acked-by: Ansis Atteka <aatteka@ovn.org>
2016-09-24 10:52:00 -07:00
Justin Pettit
2a7c4805a7 Add OpenFlow command to flush conntrack table entries.
Signed-off-by: Justin Pettit <jpettit@ovn.org>
Acked-by: Ben Pfaff <blp@ovn.org>
2016-09-23 12:06:59 -07:00
Amitabha Biswas
1cd740088e ovs-monitor-ipsec: Fix Python style.
Found by flake8.

Fixes: 19cd0a8782 ("ipsec: Do not allow ipsec_gre tunnel traffic to exit unencrypted")
Signed-off-by: Amitabha Biswas <abiswas@us.ibm.com>
Acked-by: Numan Siddique <nusiddiq@redhat.com>
Signed-off-by: Ben Pfaff <blp@ovn.org>
2016-08-31 09:56:56 -07:00
Ansis Atteka
19cd0a8782 ipsec: Do not allow ipsec_gre tunnel traffic to exit unencrypted
If ipsec_gre tunnel configuration is changed in OVSDB,
then GRE packets may sometimes exit unencrypted until
per-tunnel IPsec policies are installed by ovs-monitor-ipsec
daemon.

This patch fixes this issue by installing single, low
priority IPsec block policy that drops all GRE packets
coming out from ipsec_gre tunnels that do not have yet
their own IPsec policies installed.

This patch depends on to two other recently committed
patches:
1. 574ff4aa (tunneling: get skb marking to work
   properly with tunnels)
2. ca3574d5 (IPsec: refactor out some code in
   OVS_MONITOR_IPSEC_START macro)

Signed-off-by: Ansis Atteka <aatteka@ovn.org>
Reported-by: Steffen Birkeland <Steffefb@stud.ntnu.no>
Acked-by: Jesse Gross <jesse@kernel.org>
2016-08-30 15:00:59 -07:00
Justin Pettit
92690eae8a Prepare for post-2.6.0 (2.6.90).
Signed-off-by: Justin Pettit <jpettit@ovn.org>
Acked-by: Ben Pfaff <blp@ovn.org>
2016-08-06 20:54:44 -07:00
Justin Pettit
4c71448618 Prepare for 2.6.0.
Signed-off-by: Justin Pettit <jpettit@ovn.org>
Acked-by: Ben Pfaff <blp@ovn.org>
2016-08-06 20:54:41 -07:00
Ryan Moats
f4a4ce58c0 ovn: Add ovn-controller-vtep debian package
Having a separate debian package for deploying
the ovn-controller-vtep binary enables the ability
to assign specific nodes the role of communicating
with VTEP enabled TORs.

Change-Id: Ia36aea7d89bd011a57918820b2a9f6e3469b3e04
Signed-off-by: Ryan Moats <rmoats@us.ibm.com>
Signed-off-by: Ben Pfaff <blp@ovn.org>
2016-07-28 12:56:32 -07:00
Daniele Di Proietto
a489b16854 conntrack: New userspace connection tracker.
This commit adds the conntrack module.

It is a connection tracker that resides entirely in userspace.  Its
primary user will be the dpif-netdev datapath.

The module main goal is to provide conntrack_execute(), which offers a
convenient interface to implement the datapath ct() action.

The conntrack module uses two submodules to deal with the l4 protocol
details (conntrack-other for UDP and ICMP, conntrack-tcp for TCP).

The conntrack-tcp submodule implementation is adapted from FreeBSD's pf
subsystem, therefore it's BSD licensed.  It has been slightly altered to
match the OVS coding style and to allow the pickup of already
established connections.

Signed-off-by: Daniele Di Proietto <diproiettod@vmware.com>
Acked-by: Antonio Fischetti <antonio.fischetti@intel.com>
Acked-by: Joe Stringer <joe@ovn.org>
2016-07-27 17:58:44 -07:00
Joe Stringer
487a39df5d debian: Add six dependency to python-openvswitch.
python-openvswitch uses the python "six" library, add a dependency for
this to the debian package.

VMware-BZ: #1700259
Reported-by: Devang Doshi <ddoshi@vmware.com>
Signed-off-by: Joe Stringer <joe@ovn.org>
Acked-by: Ben Pfaff <blp@ovn.org>
2016-07-27 16:26:29 -07:00
Joe Stringer
b52388e6c4 debian: Fix OVS upgrade dependencies.
Commit 0dcc739e7a ("debian: Move ovs-lib to openvswitch-common.")
shifted a file between debian packages, but didn't update the
destination package annotations to indicate that it replaces a file
from earlier versions of the source package.

As a result, if one installs openvswitch-switch-2.5* (or earlier) and
then tries to upgrade to openvswitch-{switch,common}-2.5.90+, the
install of openvswitch-common will fail like the following:

dpkg: error processing archive
/tmp/openvswitch-common_2.5.90-1_amd64.deb (--install):
trying to overwrite '/usr/share/openvswitch/scripts/ovs-lib', which is
also in package openvswitch-switch 2.5.0-1

Fix the issue by adding "Replaces" and "Breaks" tags to the new
openvswitch-common section of debian/control.

Fixes: 0dcc739e7a ("debian: Move ovs-lib to openvswitch-common.")
Signed-off-by: Joe Stringer <joe@ovn.org>
Acked-by: Daniele Di Proietto <diproiettod@vmware.com>
2016-07-21 13:12:45 -07:00
Joe Stringer
06c58061d4 packaging: Remove PyQt4 dependency.
This doesn't seem to have been necessary since ovsdbmonitor was removed
in commit 7868fbc6c9 ("ovsdbmonitor: Remove."). Drop the dependency.

Signed-off-by: Joe Stringer <joe@ovn.org>
Acked-by: Ben Pfaff <blp@ovn.org>
2016-07-15 13:52:14 -07:00
Aaron Rosen
59ae5a6e4e gitignore: Update for Debian build artifacts.
After running: `fakeroot debian/rules binary`.

These files are left uncommitted to the source tree and should be ignored.

Signed-off-by: Aaron Rosen <aaronorosen@gmail.com>
Signed-off-by: Ben Pfaff <blp@ovn.org>
2016-07-02 10:20:12 -07:00
Aaron Conole
3239f7a0b0 debian: Add the tcpdump utility to the debian package
Add ovs-tcpdump to the debian build.

Signed-off-by: Aaron Conole <aconole@redhat.com>
Signed-off-by: Ben Pfaff <blp@ovn.org>
Acked-by: Christian Ehrhardt <christian.ehrhardt@canonical.com>
2016-06-23 15:04:29 -07:00
Edwin Chiu
4886d4d249 debian, rhel: Ship ovs shared libraries and header files
Compile and package ovs shared libraries and create new header
package for debian (openvswitch-dev) and rhel (openvswitch-devel).

VMware-BZ: #1556299
Signed-off-by: Edwin Chiu <echiu@vmware.com>
Co-authored-by: Harold Lim <haroldl@vmware.com>
Signed-off-by: Ben Pfaff <blp@ovn.org>
2016-06-07 08:22:33 -07:00
Simon Horman
455f38e009 debian: Fix treatment of upstream version that contains hyphens.
The Debian Policy Manual
(https://www.debian.org/doc/debian-policy/ch-controlfields.html#s-f-Version)
says that the upstream_version may contain only alphanumerics and the
characters . + - : ~ (full stop, plus, hyphen, colon, tilde) and should
start with a digit.

Currently, the upstream_version is defined in the debian/rules file:

DEB_UPSTREAM_VERSION=$(shell dpkg-parsechangelog | sed -rne 's,^Version: ([0-9]:)*([^-]+).*,\2,p')

The version number is taken from the dpkg-parsechangelog printout then the
first part of the version number which does not contain hyphen is filtered
out with sed. However the Debian Policy Manual says that hyphen is allowed
in the upstream_version.

This is not a problem with current vanilla OVS debian version. But, if a
postfix string including a hyphen is added to the upstream_version then
installation of datapath-dkms package will fail.

Reported-by: Zoltán Balogh <zoltan.balogh@ericsson.com>
Tested-by: Zoltán Balogh <zoltan.balogh@ericsson.com>
Signed-off-by: Ben Pfaff <blp@ovn.org>
2016-04-22 11:32:07 -07:00
Sairam Venugopal
792d377d83 datapath-windows: Add Connection Tracking Support
Enable support for Stateful Firewall in Hyper-V by adding a Connection
Tracking module. The module has been ported over from the userspace
implementation patch of a similar name.

The current version of the module supports ct - zone, mark and label for
TCP packets. Support for other packet formats will be added in subsequent
patches.

The conntrack-tcp module is adapted from FreeBSD's pf subsystem and hence
the BSD license. It has been ported over to match OVS Hyper-V coding
style.

Signed-off-by: Sairam Venugopal <vsairam@vmware.com>
Signed-off-by: Daniele Di Proietto <diproiettod@vmware.com>
Co-Authored-by: Daniele Di Proietto <diproiettod@vmware.com>
Acked-by: Nithin Raju <nithin@vmware.com>
Signed-off-by: Ben Pfaff <blp@ovn.org>
2016-04-14 10:11:46 -07:00
Russell Bryant
d87e05ff94 debian: Ship ovn-[ns]b man pages in ovn-common.
Move ovn-nb and ovn-sb man pages to ovn-common so that the man pages for
these DB schemas are always available with the corresponding command
line utilities, ovn-nbctl and ovn-sbctl.

Signed-off-by: Russell Bryant <russell@ovn.org>
Tested-by: Simon Horman <simon.horman@netronome.com>
Acked-by: Gurucharan Shetty <guru@ovn.org>
2016-03-29 08:42:36 -07:00
RYAN D. MOATS
60bdd01148 Separating OVN NB and SB database processes
OVN NB & SB DB's should be run in separate ovsdb-server processes
and should run with ovn-ctl start_northd / stop_northd.  This patch
includes changes to unit tests, tutorial and debian scripts to remain
self-consistent.

Signed-off-by: RYAN D. MOATS <rmoats@us.ibm.com>
Signed-off-by: Michael Arnaldi <arnaldimichael@gmail.com>
Co-authored-by: Michael Arnaldi <arnaldimichael@gmail.com>
Signed-off-by: Russell Bryant <russell@ovn.org>
2016-03-23 20:07:43 -04:00
Ben Pfaff
87530bc1c1 ovs-ctl: Remove code for upgrading from Open vSwitch 1.6 and earlier.
OVS 1.7 was released in July 2012, so by the time current OVS is released,
it will be almost four years old.  I think that this is long enough to
remove special upgrade code.

It's almost impossible to do this upgrade in any case since there is
no overlap in the base kernel versions supported by the out of tree
modules in the two versions (the only possibility is running the new
version of OVS on the upstream module from Linux 3.3).

Signed-off-by: Ben Pfaff <blp@ovn.org>
Acked-by: Jesse Gross <jesse@kernel.org>
2016-03-16 20:11:24 -07:00
Ben Pfaff
0d3f215202 tests: Add ability to automatically rerun failed tests.
A lot of packaging was doing this already, so this simplifies their
implementation.

Signed-off-by: Ben Pfaff <blp@ovn.org>
Acked-by: Andy Zhou <azhou@ovn.org>
2016-02-24 15:46:09 -08:00
Ben Pfaff
e752914179 ovs-benchmark: Remove.
This utility was completely broken and no one noticed for the time of a
full release, so I think that's a safe sign that we should remove it.

Signed-off-by: Ben Pfaff <blp@ovn.org>
Acked-by: Jarno Rajahalme <jarno@ovn.org>
2016-02-05 16:49:29 -08:00
Russell Bryant
03756304cf python: Remove old style classes.
Python 3 removed support for "old-style classes".  Classes should always
inherit from object to get consistent behavior between Python 2 and 3.

Enable a flake8 warning to help prevent regressions in the future.

Signed-off-by: Russell Bryant <russell@ovn.org>
Acked-by: Ben Pfaff <blp@ovn.org>
2016-01-22 08:25:27 -05:00
Russell Bryant
cb96c1b27e python: Convert dict iterators.
In Python 2, dict.items(), dict.keys(), and dict.values() returned a
list.  dict.iteritems(), dict.iterkeys(), and dict.itervalues() returned
an iterator.

As of Python 3, dict.iteritems(), dict.itervalues(), and dict.iterkeys()
are gone.  items(), keys(), and values() now return an iterator.

In the case where we want an iterator, we now use the six.iter*()
helpers.  If we want a list, we explicitly create a list from the
iterator.

Signed-off-by: Russell Bryant <russell@ovn.org>
Acked-by: Ben Pfaff <blp@ovn.org>
2016-01-21 23:00:11 -05:00
Russell Bryant
56ec061192 python: Fix octal compatibility.
Octal constants must be written as 0o077 instead of 0077 to be
compatible with both Python 2 and 3.

Signed-off-by: Russell Bryant <russell@ovn.org>
Acked-by: Ben Pfaff <blp@ovn.org>
2016-01-20 16:45:06 -05:00
Russell Bryant
b3ac29477d python: Stop using xrange().
Python 2 had range() and xrange().  xrange() is more efficient, but
behaves differently so range() was retained for compatibility.  Python 3
only has range() and it behaves like Python 2's xrange().

Remove explicit use of xrange() and use six.moves.range() to
make sure we're using xrange() from Python 2 or range() from Python 3.

Signed-off-by: Russell Bryant <russell@ovn.org>
Acked-by: Ben Pfaff <blp@ovn.org>
2016-01-20 16:43:54 -05:00
Russell Bryant
73eb682edb python: Fix xmlrpclib imports.
Fix imports of xmlrpclib to be compatible with Python 3.  Python 2 had
xmlrpclib (client) and SimpleXMLRPCServer (server).  In Python 3, these
have been renamed to xmlrpc.client and xmlrpc.server.

The solution implemented here is to use the six library.  It may seem
excessive for this particular issue, but the six library provides
helpers for Python 2 and 3 compatibility for many different issues.
This is just the first of many uses of the six library.

Signed-off-by: Russell Bryant <russell@ovn.org>
Acked-by: Ben Pfaff <blp@ovn.org>
2016-01-20 16:43:15 -05:00
Russell Bryant
f3068bff92 python: Fix exception handler compatibility.
Python 3 dropped exception handlers of the deprecated form:

  except Exception, e:

You must use the newer syntax of:

  except Exception as e:

This patch also enables a flake8 warning for this.

  H231 Python 3.x incompatible 'except x,y:' construct

Signed-off-by: Russell Bryant <russell@ovn.org>
Acked-by: Ben Pfaff <blp@ovn.org>
2016-01-12 11:47:33 -05:00
Russell Bryant
3c057118d1 python: Resolve pep8 comparison errors.
Resolve pep8 errors:

  E711 comparison to None should be 'if cond is None:'

The reason comparing against None with "is None" is preferred over
"== None" is because a class can define its own equality operator and
produce bizarre unexpected behavior.  Using "is None" has a very
explicit meaning that can not be overridden.

  E721 do not compare types, use 'isinstance()'

This one is actually a mistake by the tool in most cases.
'from ovs.db import types' looks just like types from the Python stdlib.
In those cases, use the full ovs.db.types name.  Fix one case where it
actually was types from the stdlib.

Signed-off-by: Russell Bryant <russell@ovn.org>
Acked-by: Ben Pfaff <blp@ovn.org>
2016-01-05 18:13:47 -05:00
Russell Bryant
5697ca9901 python: Remove unused imports and variables.
This resolves the following flake8 error types:

  F841 local variable 'e' is assigned to but never used
  F401 'exceptions' imported but unused

Signed-off-by: Russell Bryant <russell@ovn.org>
Acked-by: Ben Pfaff <blp@ovn.org>
2016-01-05 18:13:47 -05:00
Russell Bryant
115d8719db python: Run flake8 at build time.
If flake8 is installed, run it at build time.  Similar to most Makefile
targets, run it once and then only run again if the files change.

flake8 is set to ignore all error and warning types that currently occur.
Future patches will remove items from the ignore list as they are
resolved.

Signed-off-by: Russell Bryant <russell@ovn.org>
Acked-by: Ben Pfaff <blp@ovn.org>
2016-01-05 18:13:46 -05:00
Gurucharan Shetty
26c430615c openvswitch-switch.init: Redirect error to /dev/null.
The latest Open vSwitch kernel module from Upstream linux does not
list "version". During debian package installation, we would see
a non-harmful error in the log. This patch suppresses it.

Signed-off-by: Gurucharan Shetty <guru@ovn.org>
Acked-by: Ben Pfaff <blp@ovn.org>
2016-01-05 11:38:10 -08:00
Gurucharan Shetty
0dcc739e7a debian: Move ovs-lib to openvswitch-common.
ovs-lib is used by both ovs-ctl and ovn-ctl. So it
is useful to move it to openvswitch-common

Signed-off-by: Gurucharan Shetty <guru@ovn.org>
Acked-by: Ben Pfaff <blp@ovn.org>
2016-01-05 09:53:40 -08:00
Gurucharan Shetty
fbf2450e74 debian: Add a package for OVN docker drivers.
Signed-off-by: Gurucharan Shetty <guru@ovn.org>
Acked-by: Ben Pfaff <blp@ovn.org>
2016-01-05 09:01:07 -08:00
Gurucharan Shetty
86d9ab0413 debian: Add a package for OVN central components.
Signed-off-by: Gurucharan Shetty <guru@ovn.org>
Acked-by: Ben Pfaff <blp@ovn.org>
2016-01-05 09:00:48 -08:00
Gurucharan Shetty
5629723d84 debian: Add a package for host components.
Signed-off-by: Gurucharan Shetty <guru@ovn.org>
Acked-by: Ben Pfaff <blp@ovn.org>
2016-01-05 08:59:59 -08:00
Gurucharan Shetty
5f00df7d6e debian: Add a package for OVN common components.
Signed-off-by: Gurucharan Shetty <guru@ovn.org>
Acked-by: Ben Pfaff <blp@ovn.org>
2016-01-05 08:58:18 -08:00
Ansis Atteka
039abf8df3 debian: Remove old PKI directory migration code
Open vSwitch 1.3 and older was creating certificates and private
key in /usr/share/openvswitch/pki.  However, since PKI directory
is mutable, then this was considered a bug and PKI directory was
moved to /var directory in Open vSwitch 1.4 Commit 14bd2d51 (debian:
Move PKI directory to FHS-compliant location.)

Note, that Ubuntu 12.04 already was shipping with Open vSwitch 1.4
and should have created (in case of fresh install) or moved (in
case of upgrade from Open vSwitch 1.3) this directory to the right
location.

So I am inclined to remove this code because the only reason for it
to exist would be, if someone would be upgrading from Open vSwitch
1.3 or older version directly to 2.5 without using any intermediary
upgrade releases.

Signed-Off-By: Ansis Atteka <aatteka@nicira.com>
Acked-by: Ben Pfaff <blp@ovn.org>
2015-12-23 13:17:52 -08:00
Ben Pfaff
c61f4bc1e4 NEWS: Improve organization.
Signed-off-by: Ben Pfaff <blp@ovn.org>
Acked-by: Justin Pettit <jpettit@ovn.org>
2015-12-07 16:49:58 -08:00
Justin Pettit
ca32170a71 Prepare for post-2.5.0 (2.5.90).
Signed-off-by: Justin Pettit <jpettit@ovn.org>
Acked-by: Joe Stringer <joe@ovn.org>
2015-12-03 23:35:35 -08:00
Justin Pettit
283a1accba Prepare for 2.5.0.
Signed-off-by: Justin Pettit <jpettit@ovn.org>
Acked-by: Joe Stringer <joe@ovn.org>
2015-12-03 23:35:32 -08:00
Gurucharan Shetty
873d85653d debian: Skip systemctl redirect.
After some experimentation on Ubuntu15.04, I see the
following behavior.

1. If you install openvswitch-switch with 'apt-get install',
then you automatically get a upstart and systemd config files
for openvswitch. The integration with 'interfaces' fails
because both the upstart and systemd jobs do not have logic
to handle it.

The above behavior will likely get fixed soon in upstream
Ubuntu.

2. If you install openvswitch-switch via the packages
created from the openvswitch repo, there is no systemd or
upstart conf files installed. But systemd notices this
and creates a runtime openvswitch conf file which does
nothing but call back the sysv startup script.

In the above case when you call
"/etc/init.d/openvswitch-switch start", it inturn calls
"/bin/systemctl start openvswitch-switch.service" and
that inturn again calls "/etc/init.d/openvswitch-switch start".
But the above for some reason simply hangs. It looks like a call
to ifup when invoked in this manner does not return.
I am not sure why this is happening.

We can avoid the above behavior completely by skipping the
systemctl redirect as done in this commit. This should fix
both 1. and 2. above.

Signed-off-by: Gurucharan Shetty <guru@ovn.org>
Acked-by: Ben Pfaff <blp@ovn.org>
2015-12-02 10:00:46 -08:00
YAMAMOTO Takashi
f6783a7a3b use "/usr/bin/env python" for shebangs for python scripts
On NetBSD, a typical path of python interpreter is /usr/pkg/bin/python.

Signed-off-by: YAMAMOTO Takashi <yamamoto@midokura.com>
Acked-by: Ben Pfaff <blp@ovn.org>
2015-11-26 18:37:19 +09:00
Saurabh Mohan
6741ca0d5c debian: place kernel module to satisfy depmod search.
On Ubuntu depmod's search priority is configured in /etc/depmod to be
updates and then the kernel built-in directory.
$ cat /etc/depmod.d/ubuntu.conf
search updates ubuntu built-in

Thus change the placement of openvswitch.ko under updates/ not kernel/updates.

Acked-by: Ansis Atteka <aatteka@nicira.com>
Signed-off-by: Saurabh Mohan <saurabh@cplanenetworks.com>
2015-11-02 20:54:18 -08:00
Justin Pettit
2fac5fedc7 Set release dates for 2.4.0.
Signed-off-by: Justin Pettit <jpettit@nicira.com>
Acked-by: Ben Pfaff <blp@nicira.com>
2015-08-24 15:33:58 -07:00
Pravin B Shelar
99e7b07740 tunneling: Remove gre64 tunnel support.
GRE64 was introduced to extend gre key from 32-bit to 64-bit using
gre-key and sequence number field. But GRE64 is not standard
protocol. There are not many users of this protocol. Therefore we
have decided to remove it.

Signed-off-by: Pravin B Shelar <pshelar@nicira.com>
Acked-by: Jesse Gross <jesse@nicira.com>
2015-08-20 13:01:58 -07:00
James Page
3d8dededea debian: Rationalize packaging using new debhelper.
Newer debhelper versions support overrides, making rules files simpler and
easier to extend.

Requires some changes in how files are installed (_debian build folder
dropped).

Signed-off-by: James Page <james.page@ubuntu.com>
Signed-off-by: Ben Pfaff <blp@nicira.com>
2015-07-13 08:55:11 -07:00
James Page
c4270b1377 debian: wrap-and-sort
Wrap long lines and sort items in the Debian packaging files.

Signed-off-by: James Page <james.page@ubuntu.com>
Signed-off-by: Ben Pfaff <blp@nicira.com>
2015-07-08 08:07:09 -07:00
Ben Pfaff
e23812fc60 Increase prerequisite from Python 2.4 to Python 2.7.
This means that users of XenServer 6.5 and earlier will need to install
Python 2.7.

Signed-off-by: Ben Pfaff <blp@nicira.com>
2015-06-23 11:08:52 -07:00
Justin Pettit
c4c7e593f5 Prepare for post-2.4.0 (2.4.90).
Signed-off-by: Justin Pettit <jpettit@nicira.com>
Acked-by: Jesse Gross <jesse@nicira.com>
2015-06-18 12:12:07 -07:00