Tag-switching IP Issues
Hi
I have 2 routers with a FE link,
7206 ---Trunk---> switch 3560-48 ---> link WAN with FE to ---> 3640 --trunk->sw3560-48-->customers,
my Internet access is via the 7206 router.
I need to stablish a ibgp session to configure VPN-MPLS for some services, i set the mpls parameters and is posible to stablish the session,
ip cef is on, and i can see the TDP Neighbor UP between 7206 and 3640.
I have a switch 3560-48 connected to the router 3640, the link its a trunk, so i can use these ports for
internet customer access.
well, when I apply the tag-switching ip or mpls ip ont the interfaces between 7206 and 3640 link,
the customers that have only internet access via the 3640 router have problems to browse, www.yahoo.com and some other pages.
When I remove the tag-switching ip or mpls ip
the service normalizes.
could somebody help me with this issue
Thank you
Rolando
Jon
Thank you for the information,
just to be shure,
I can use this command to modify the MTU on my switches?
sw(config)#system mtu 1520
so could you help me to define where i must to change the mtu because i am using trunks,
and which MTU must modify,
the mtu only or mpls mtu or both
i attach a diagram with the topology
Thank you for your help
Rolando
Similar Messages
-
Hello everybody,
I would like to get some advise in a tag-switching config in order to perform a testing: I have a Cisco 12012 and a Cisco 7507 each with a GigE interface. I would like to establish several tdp sessions using this single interface. I was thinking in creating sub-interfaces and to add a dot1.q vlan tag to each of them and then to configure tag-swithching in all of the sub-interfaces. I wonder if this might work.
I cannot perform this test right now since I have my equipment in different sites so if I am certain of this to work I might transport them.
I would appreciate any help!! :)
Thanks in advance,
Regards,
NatanielThanks Martin, thanks Harold,
In fact what I want to achieve is to establish several (as many as possible) tdp sessions among my 12K and any other Cisco router, so I am not seeking for the label switching functionalities.
Soon after I posted my message I created in my lab a FE back to back connection among two 7507s and configured as I said: sub-interfaces tagged with dot1q and added a /30 in each of them. Afterwards I configured tag-switching in all the subinterfaces and could see that the tdp sessions were created. Certainly I did not verify the TCP sessions linked to the tdp sessiones neither did debugging to see messages but I think that this scenario might work for what I want: to give some stress in tdp sessions to my 12K as I have in production.
Our core is based in 12Ks and runs tag-switching so I am figuring out how to test a migration scenario towards mpls, this is my final goal. I want to observe a 12012´s performance while handling tdp and ldp sessions at the same time. ANY SUGGESTIONS? :)
Thank you guys!
Regards,
Nataniel -
Link errors when tag-switching enabled
I have 4 6506 with SUP720-3BXL connected via 100Mb ethernet links as below. (you may have to copy the diagram to look at it using a fixed font)
r3---utp---r4
|.........|
media......|
converter..|
|.........|
fibre....Telstra 2Mb Ethernet service
|.........|
media......|
converter..|
|.........|
r1--fibre--r2
On the link between r1 and r3 I am getting CRC errors and runts for about 5% of packets.
When I turn off tag-switching on that link I get no errors so it doesn't appear to be a physical link problem.
No other links are showing these symptoms.
Any ideas as to what could be causing this?
Michaelrepeat after me (as many time as necessary)
a layer 1 problem is not an mpls problem
a layer 1 problem is not an mpls problem
a layer 1 problem is not an mpls problem
a layer 1 problem is not an mpls problem
Switch interface is set for 100Mb full-duplex
Media converter is set for 100Mb full-duplex also, but this media converter also has a DIP switch labelled 'force'
I changed this DIP switch and everthing runs perfectly.
I hate media converters. -
Hi All,
We are wondering ,what would be the effect on performance of the traffic,where higher tag-switching mtu values are set (for example 4470 bytes).
I guess we should be fine with a maximum value of 1516 bytes instead of 4470.We are currently set with Tag-switching mtu value of 4470 and considering to change to 1520,is there any perfomance improvement by doing that. Any help would be appreciated.
Thanks
Regards
Anantha Subramanian NatarajanHello Anantha,
4470 is the default MTU size on WAN links like ATM (every speed) and POS or serial (T3 or E3).
But usually on the path of user data the first and the last hop are LAN segments (and there can be intermediate hops when moving data inside a Provider POP).
So a so high MTU is not used actually by user data: at least on the user side the IP MTU is 1500 bytes.
On the server side you can enable jumbo frames for server-to-server communication.
And what is important to take in account is that MPLS frames cannot be fragmented or they can go out a link or they are discarded.
The size can be calculated by thinking of:
an IP MTU of 1500 bytes needs to be carried in any case.
a L3 MPLS VPN would require a two label stacks.
More complex scenarios involving MPLS TE used to carry MPLS VPN traffic require a deeper stack.
Then if you offer Carrier Supporting Carrier sevices for example the stack is longer.
If you provide a EoMPLS service to someone using it to carry an MPLS VPN you may need 1534 bytes MTU (I did some calculations for a merge of two providers)
It is also important to increase the MTU on intervening L2 switches inside your POPs this has to be considered and implemented too.
This can be part of the problem a L2 switch on the path not configured to handle the added MPLS overhead and so causing some packets to be dropped.
The benefit of using an MPLS MTU of 1520 is that you don't leave space to possible ambiguities on what can travel on the MPLS backbone end-to-end.
Hope to help
Giuseppe -
About command"tag-switching advertise-tags"
Does the command "tag-switching advertise-tags" must be used in the mpls environment? If I do not use it, whether the PE or P router can not work normally?
Hi,
Well the tag-switching advertise tags is used only to apply the tags to an IP Prefix selectively & not for the Global IP Table..
As soon as u enable MPLS on an interface it floods the MPLS LFIB with the local labels & with the labelled prefix only with the allowed Prefx range..
The advertised -tag is normally associated with the access-list..
As an example I can use advertise tags associating with the only the loopback which shall be the next-hop for PE/P..
Pls do let me know for further queries..
Thanks.
Pinku P Doshi
CCIE-Datacraft India -
Do I always need tag-switching ip
Do I always need tag-switching ip on a mpls interface
And what does it actually do
Regards
PErHi
It doesnt really mention anything regarding the
tag-switching ip command
this is what i have in my config
interface FastEthernet0/0
no ip address
duplex auto
speed auto
interface FastEthernet0/0.103
encapsulation dot1Q 103
ip address 10.1.1.9 255.255.255.252
mpls traffic-eng tunnels
tag-switching ip
interface FastEthernet0/0.104
encapsulation dot1Q 104
ip address 10.1.1.13 255.255.255.252
mpls traffic-eng tunnels
interface FastEthernet0/0.108
encapsulation dot1Q 108
ip vrf forwarding int-cust
ip address 192.168.1.14 255.255.255.252
interface FastEthernet0/0.131
encapsulation dot1Q 131
ip address 10.111.64.237 255.255.255.0
interface FastEthernet0/1
no ip address
shutdown
duplex auto
speed auto
as you can see some of the interfaces uses tag-switching ip and others dont
can you clearify if its needed or not and what does it do.
In this config there is no mpls ip commands ????
Regards -
URGENT - tag-switching over gre-tunnel - how ??
hi,
my problem is that i want to connect two pe-router
over a gre-tunnel.
this is because between the two pe´s i unfortunatly have two cisco828 router as modemrouter inbetween which do no tag-switching.
so i decided to use a gre tunnel between the two pe´s to do tag-switching.
but if i want to forward packets greater than 1492 bytes and the df-bit is set - no chance.
here is the figure and config of the two tunnels:
c3640 - c828 -LINE- c828 - c3640
<==========TUNNEL===============>
first c3640:
interface Tunnel65052
description PE-PE Verbdg. Hoersching-Pasching
ip unnumbered Loopback0
ip mtu 1512
load-interval 30
tag-switching mtu 1512
tag-switching ip
keepalive 10 3
tunnel source 10.20.192.3
tunnel destination 10.20.192.6
second c3640:
interface Tunnel65052
description PE-PE Verbdg. Hoersching-Pasching
ip unnumbered Loopback0
ip mtu 1512
load-interval 30
tag-switching mtu 1512
tag-switching ip
keepalive 10 3
tunnel source 10.20.192.6
tunnel destination 10.20.192.3
on the 828 router i did no adjustment of mtu !
if i do a ping:
r-enns1#pi vrf lkg 172.16.169.121 size 1492 df
Type escape sequence to abort.
Sending 5, 1492-byte ICMP Echos to 172.16.169.121, timeout is 2 seconds:
Packet sent with the DF bit set
Success rate is 100 percent (5/5), round-trip min/avg/max = 208/211/212 ms
r-enns1#
r-enns1#
r-enns1#
r-enns1#
r-enns1#pi vrf lkg 172.16.169.121 size 1493 df
Type escape sequence to abort.
Sending 5, 1493-byte ICMP Echos to 172.16.169.121, timeout is 2 seconds:
Packet sent with the DF bit set
M.M.M
Success rate is 0 percent (0/5)
r-enns1#
please help - thanksHere's at least two options you could try:
1) Lower the MTU on the tunnel-interface and let PMTU on the endpoints take care of the fragmentation. This could have some serious implications all depending on the systems and applications/protocols used on the network, but in most cases it'll work just fine.
2) Simply remove the DF-bit on incoming packets to the router and lower the MTU on the tunnel-interface and let the router do fragmentation regardless of what the endpoints says. Since you have a 3640 on each end and 828's in the middle, I think it should be capable of this..
You should do a MSS-modification as well in both cases.
Change the MTU like this:
interface Tunnel65052
ip mtu 1488
tag-switching mtu 1500
Then you have set all IP-packets to maximum 1488 bytes (including headers) and let there be room for 3 MPLS labels...
At least I think it should behave like this... please don't kill me if i'm wrong.. :)
Remove the DF-bit with route-map's on the inside interfaces:
interface FastEthernet1/0.100
description inside interface
ip policy route-map clear-df
ip tcp adjust-mss 1424
route-map clear-df permit 10
set ip df 0 -
TDP tag-switching - "tag not in FIB"
Afternoon all,
Some guidance would be appreciated. I am supporting a small EU MPLS network - 3 P routers linked by ATM PVCs to 17 PE routers. The P routers are the route reflectors and the IGP is OSPF - most routers 7206VXR/NPE300. IOS = 12.2(7). TDP being used.
I have a customer requirement to break the traditional PE link to a P router directly by a PVC or FE if on same site.
I have attempted to link 3 PE routers in a chain, hanging off another PE router (see diagram). Basically this would result in "Top-PE" linking the chain with the rest of the EU network. Connecting "Second-PE" directly to the P router is not an option sadly. All router tag-switching interfaces and loopbacks are part of OSPF area 0 and all loopbacks can be contacted perfectly. All routers VPNV4 peer with the 3 RRs. The chain of PEs in the yellow box are all tag-switching perfectly and VPNs are working perfectly - just not beyond "Second-PE". When I run "tag-switching ip" on "Top-PE", it does not create any forwarding tags to "Second-PE" as you can see below (tag not in FIB):
top-PE# sh ip cef vrf XYZ 194.13.125.78
194.13.125.64/28, version 13780
0 packets, 0 bytes
Flow: AS 0, mask 28
tag information set
local tag: VPN-route-head
fast tag rewrite with
Recursive rewrite via tag not in FIB , tags imposed {116}
via 20.63.4.133, 0 dependencies, recursive
next hop 20.63.38.114, Ethernet6/2.2706 via 20.63.4.133/32
valid punt adjacency
tag rewrite with
Recursive rewrite via tag not in FIB , tags imposed {116}
top-PE# sh tag-switching int
Interface IP Tunnel Operational
FastEthernet1/1 Yes No Yes ! to P router
Ethernet6/2.2706 Yes No Yes ! to "Second-PE"
"sh tag forwarding-table" does not show any tags for Interface Ethernet6/2.2706
Everything works fine on "Second-PE" as follows:
Second-PE# sh ip cef vrf XYZ 194.13.125.46
194.13.125.32/28, version 318, epoch 0, cached adjacency 20.63.38.113
0 packets, 0 bytes
tag information set
local tag: VPN-route-head
fast tag rewrite with Fa0/1.2706, 20.63.38.113, tags imposed: {159 147}
via 20.63.4.131, 0 dependencies, recursive
next hop 20.63.38.113, FastEthernet0/1.2706 via 20.63.4.131/32
valid cached adjacency
tag rewrite with Fa0/1.2706, 20.63.38.113, tags imposed: {159 147}
Q1) Can PE routers simply onward tag-switch packets that are not destined for them, just as P routers do.
Q2) Can PE routers act as a P router and PE router at the same time - so have some interfaces running VRFs, and some tag-switching?
Q3) If answers to above state this "should" work, is it likely to be an IOS bug? I can find nothing on CCO about "tag not in FIB"
Q4) should the design (although not ideal in any way) shown in diagram work?
Many thanks for any assistance anybody can provide,
best regards
NeilA1) yes.
A2) yes.
A3) "Recursive rewrite via tag not in FIB" means that there is no label in the fib for the loopback address of the egress PE (20.63.4.133).
Could you please provide a "show ip route 20.63.4.133", "show ip cef 20.63.4.133" and "show mpls ldp bind 20.63.4.133 32" from the "top PE".
A4) It should definitely work.
Hope this helps, -
Can not enable tag-switching on the router
Good day for all,
i have 7206 g1 router with 7200 Software (C7200-JK9S-M), Version 12.3(4)T4 (enterprise)
and i can not enable mpls.
Router(config)#int gigabitEthernet 0/2.102
Router(config-subif)#mpls ip
% Tag switching not supported on interface GigabitEthernet0/2.102
this error on all interfaces
what is the problem? (cef enable)
Thank YouI have 2 identical 7206VXR, same IOS, same PAs
And one of em allows tag-switching on FasteEthernet 0/0.30 (dot1q), other - doesnt :(
--- rtr 1 ----
Cisco Internetwork Operating System Software
IOS (tm) 7200 Software (C7200-P-M), Version 12.2(18)S5, RELEASE SOFTWARE (fc1)
Technical Support: http://www.cisco.com/techsupport
Copyright (c) 1986-2004 by cisco Systems, Inc.
Compiled Sat 08-May-04 10:43 by nmasa
Image text-base: 0x60008FE0, data-base: 0x6151E000
ROM: System Bootstrap, Version 12.0(19990210:195103) [12.0XE 105], DEVELOPMENT SOFTWARE
BOOTLDR: 7200 Software (C7200-BOOT-M), Version 12.0(18)S, EARLY DEPLOYMENT RELEASE SOFTWARE (fc1)
TV3 uptime is 3 weeks, 14 hours, 28 minutes
System returned to ROM by reload at 23:02:24 EEST Thu Aug 12 2004
System image file is "slot0:c7200-p-mz.122-18.S5.bin"
Last reload reason: Reload command
cisco 7206VXR (NPE300) processor (revision D) with 229376K/65536K bytes of memory.
Processor board ID 21265679
R7000 CPU at 262Mhz, Implementation 39, Rev 2.1, 256KB L2 Cache
6 slot VXR midplane, Version 2.0
Last reset from power-on
Channelized E1, Version 1.0.
X.25 software, Version 3.0.0.
Bridging software.
Primary Rate ISDN software, Version 1.1.
PCI bus mb0_mb1 has 200 bandwidth points
PCI bus mb2 has 0 bandwidth points
1 FastEthernet/IEEE 802.3 interface(s)
53 Serial network interface(s)
48 Channelized E1/PRI port(s)
125K bytes of non-volatile configuration memory.
20480K bytes of Flash PCMCIA card at slot 0 (Sector size 128K).
4096K bytes of Flash internal SIMM (Sector size 256K).
Configuration register is 0x2112
--- rtr 2 ---
Cisco Internetwork Operating System Software
IOS (tm) 7200 Software (C7200-P-M), Version 12.2(18)S5, RELEASE SOFTWARE (fc1)
Technical Support: http://www.cisco.com/techsupport
Copyright (c) 1986-2004 by cisco Systems, Inc.
Compiled Sat 08-May-04 10:43 by nmasa
Image text-base: 0x60008FE0, data-base: 0x6151E000
ROM: System Bootstrap, Version 12.0(19990210:195103) [12.0XE 105], DEVELOPMENT SOFTWARE
BOOTLDR: 7200 Software (C7200-BOOT-M), Version 12.0(9)S, EARLY DEPLOYMENT RELEASE SOFTWARE (fc1)
TV1 uptime is 3 weeks, 14 hours, 39 minutes
System returned to ROM by reload at 22:51:22 EEST Thu Aug 12 2004
System restarted at 22:53:54 EEST Thu Aug 12 2004
System image file is "slot0:c7200-p-mz.122-18.S5.bin"
Last reload reason: Reload command
cisco 7206VXR (NPE300) processor (revision D) with 229376K/65536K bytes of memory.
Processor board ID 18285647
R7000 CPU at 262Mhz, Implementation 39, Rev 1.0, 256KB L2 Cache
6 slot VXR midplane, Version 2.0
Last reset from power-on
Channelized E1, Version 1.0.
X.25 software, Version 3.0.0.
Bridging software.
Primary Rate ISDN software, Version 1.1.
PCI bus mb0_mb1 has 200 bandwidth points
PCI bus mb2 has 0 bandwidth points
1 FastEthernet/IEEE 802.3 interface(s)
68 Serial network interface(s)
48 Channelized E1/PRI port(s)
125K bytes of non-volatile configuration memory.
20480K bytes of Flash PCMCIA card at slot 0 (Sector size 128K).
4096K bytes of Flash internal SIMM (Sector size 256K).
Configuration register is 0x102
TV3(config)#in fas 0/0.30
TV3(config-subif)#tag ip
% Tag switching not supported on interface FastEthernet0/0.30 -
I'm trying to bootstrap myself on MPLS and ran into an unusual problem in the field.
We've got a mesh of routers setup to do tag switching amongst each other to support a few pseudo-wire MPLS point to point links for customers.
Our typical conf:
ip cef
mpls label protocol ldp
tag-switching tdp router-id Loopback0 force
int FastEthernet0/0
description WAN link
ip address 1.2.3.1 255.255.255.252
mpls label protocol ldp
tag-switching mtu 1532
tag-switching ip
int POS1/0
description Another WAN link
ip address 1.2.3.5 255.255.255.252
mpls label protocol ldp
tag-switching ip
int FastEthernet 2/0
description Non MPLS Cust Facing
ip address 10.10.0.1 255.255.255.0
int FastEthernet 2/1
description MPLS Pseudowire Cust Facing
mpls l2transport route 1.2.3.253 10101
Now, it was my understanding that the tag-switching mtu statement is only for tag-switched packets, untagged IP uses the interface's default mtu of 1500 if not otherwise adjusted. Someone removed the tag-switched mtu 1532 statement off a couple WAN links, and both MPLS and non pseudowire tagged traffic were affected. There was still basic L2/L3 connectivity, but larger IP packets were being dropped.
The observed behavior implied to me that all packets were being tagged, and reading up on the tag-switching command reference re-enforces that assumption. Dropping down to the lab, doing a ping between two routers with tag-switching setup and ldp neighborship established, neither echo requests or replies are tagged.
Where is the hole in my understanding of how this works?Your understanding is correct. By default LDP will allocate and advertise label for all prefixes and all traffic will be therefore label switched. You need to configure label filtering if you only need certain prefixes to have labels assigned and advertised by LDP.
Here's a brief example where only loopback addresses for the routers hosting the pseudowires are advertised.
no tag-switching advertise-tags
tag-switching advertise-tags for 1
access-list 1 permit 192.168.100.0 0.0.0.255
This same configuration need to be applied for all LDP enabled routers. It will only allow label advertisement for prefixes in the 192.168.100.0-192.168.100.255 range.
Regards -
Awesome WM text pointer disappears on tag switch
Hi,
I have the following problem. On one tag I keep Atom with some file open. If I use the mouse to click on some other tag and go back to Atom everything is ok. If I use modkey+<num> to switch to another tag and back while the mouse is over the task bar or over the widgets everything is ok. But when I switch the tag again with the keyboard shortcut and go back to Atom while the mouse is somewhere over the clients the text pointer in Atom disappears and I need to click somewhere in the text to make it reappear. And it's really annoying when coding to reach for the mouse every time you change to some other tag and back.
Here's my rc.lua:
Dremora Awesome WM config 2.0
github.com/copycat-killer
-- {{{ Required libraries
local gears = require("gears")
local awful = require("awful")
awful.rules = require("awful.rules")
require("awful.autofocus")
local wibox = require("wibox")
local beautiful = require("beautiful")
local naughty = require("naughty")
local drop = require("scratchdrop")
local lain = require("lain")
-- {{{ Error handling
if awesome.startup_errors then
naughty.notify({ preset = naughty.config.presets.critical,
title = "Oops, there were errors during startup!",
text = awesome.startup_errors })
end
do
local in_error = false
awesome.connect_signal("debug::error", function (err)
if in_error then return end
in_error = true
naughty.notify({ preset = naughty.config.presets.critical,
title = "Oops, an error happened!",
text = err })
in_error = false
end)
end
-- {{{ Autostart applications
function run_once(cmd)
findme = cmd
firstspace = cmd:find(" ")
if firstspace then
findme = cmd:sub(0, firstspace-1)
end
awful.util.spawn_with_shell("pgrep -u $USER -x " .. findme .. " > /dev/null || (" .. cmd .. ")")
end
run_once("urxvtd")
run_once("unclutter")
-- {{{ Variable definitions
-- localization
--os.setlocale(os.getenv("LANG"))
-- beautiful init
beautiful.init(os.getenv("HOME") .. "/.config/awesome/themes/dremora/theme.lua")
-- common
modkey = "Mod4"
altkey = "Mod1"
terminal = "xfce4-terminal" or "xterm"
editor = os.getenv("EDITOR") or "nano" or "vi"
editor_cmd = terminal .. " -e " .. editor
-- user defined
browser = "google-chrome"
browser2 = "iron"
gui_editor = "atom"
-- graphics = "gimp"
local layouts = {
awful.layout.suit.floating,
lain.layout.uselesstile,
awful.layout.suit.fair,
lain.layout.uselesstile.left,
lain.layout.uselesstile.top
-- {{{ Tags
tags = {
names = { "ƀ", "Ƅ", "Ɗ", "ƈ", "ƙ" },
layout = { layouts[1], layouts[3], layouts[2], layouts[1], layouts[5] }
for s = 1, screen.count() do
tags[s] = awful.tag(tags.names, s, tags.layout)
end
-- {{{ Wallpaper
if beautiful.wallpaper then
for s = 1, screen.count() do
gears.wallpaper.maximized(beautiful.wallpaper, s, true)
end
end
-- {{{ Menu
mymainmenu = awful.menu.new({ items = require("menugen").build_menu(),
theme = { height = 16, width = 130 }})
-- {{{ Wibox
markup = lain.util.markup
white = beautiful.fg_focus
gray = "#858585"
-- Textclock
mytextclock = awful.widget.textclock(markup(gray, " %a")
.. markup(white, " %d ") .. markup(gray, "%b ") .. markup(white, "%H:%M "))
-- Calendar
lain.widgets.calendar:attach(mytextclock, { fg = white })
--[[ Mail IMAP check
-- commented because it needs to be set before use
mailwidget = lain.widgets.imap({
timeout = 180,
server = "server",
mail = "mail",
password = "keyring get mail",
settings = function()
mail_notification_preset.fg = white
mail = ""
count = ""
if mailcount > 0 then
mail = "Mail "
count = mailcount .. " "
end
widget:set_markup(markup(gray, mail) .. markup(white, count))
end
-- MPD
mpdwidget = lain.widgets.mpd({
settings = function()
mpd_notification_preset.fg = white
artist = mpd_now.artist .. " "
title = mpd_now.title .. " "
file = mpd_now.file .. " "
if mpd_now.state == "pause" then
file = "mpd paused"
elseif mpd_now.state == "stop" then
file = ""
end
widget:set_markup(markup(gray, file))
end
-- /home fs
fshome = lain.widgets.fs({
partition = "/home",
settings = function()
fs_notification_preset.fg = white
fs_header = ""
fs_p = ""
if fs_now.used >= 90 then
fs_header = " Hdd "
fs_p = fs_now.used
end
widget:set_markup(markup(gray, fs_header) .. markup(white, fs_p))
end
-- Battery
batwidget = lain.widgets.bat({
settings = function()
bat_header = " Bat "
bat_p = bat_now.perc .. " "
if bat_now.status == "Not present" then
bat_header = ""
bat_p = ""
end
widget:set_markup(markup(gray, bat_header) .. markup(white, bat_p))
end
-- ALSA volume
volumewidget = lain.widgets.alsa({
settings = function()
header = " Vol "
vlevel = volume_now.level
if volume_now.status == "off" then
vlevel = vlevel .. "M "
else
vlevel = vlevel .. " "
end
widget:set_markup(markup(gray, header) .. markup(white, vlevel))
end
-- Weather
yawn = lain.widgets.yawn(123456,
settings = function()
yawn_notification_preset.fg = white
end
-- Separators
first = wibox.widget.textbox('<span font="Tamsyn 4"> </span>')
arrl_pre = wibox.widget.imagebox()
arrl_pre:set_image(beautiful.arrl_lr_pre)
arrl_post = wibox.widget.imagebox()
arrl_post:set_image(beautiful.arrl_lr_post)
-- Create a wibox for each screen and add it
mywibox = {}
mypromptbox = {}
mylayoutbox = {}
mytaglist = {}
mytaglist.buttons = awful.util.table.join(
awful.button({ }, 1, awful.tag.viewonly),
awful.button({ modkey }, 1, awful.client.movetotag),
awful.button({ }, 3, awful.tag.viewtoggle),
awful.button({ modkey }, 3, awful.client.toggletag),
awful.button({ }, 4, function(t) awful.tag.viewnext(awful.tag.getscreen(t)) end),
awful.button({ }, 5, function(t) awful.tag.viewprev(awful.tag.getscreen(t)) end)
mytasklist = {}
mytasklist.buttons = awful.util.table.join(
awful.button({ }, 1, function (c)
if c == client.focus then
c.minimized = true
else
-- Without this, the following
-- :isvisible() makes no sense
c.minimized = false
if not c:isvisible() then
awful.tag.viewonly(c:tags()[1])
end
-- This will also un-minimize
-- the client, if needed
client.focus = c
c:raise()
end
end),
awful.button({ }, 3, function ()
if instance then
instance:hide()
instance = nil
else
instance = awful.menu.clients({ width=250 })
end
end),
awful.button({ }, 4, function ()
awful.client.focus.byidx(1)
if client.focus then client.focus:raise() end
end),
awful.button({ }, 5, function ()
awful.client.focus.byidx(-1)
if client.focus then client.focus:raise() end
end))
for s = 1, screen.count() do
-- Create a promptbox for each screen
mypromptbox[s] = awful.widget.prompt()
-- Create an imagebox widget which will contains an icon indicating which layout we're using.
-- We need one layoutbox per screen.
mylayoutbox[s] = awful.widget.layoutbox(s)
mylayoutbox[s]:buttons(awful.util.table.join(
awful.button({ }, 1, function () awful.layout.inc(layouts, 1) end),
awful.button({ }, 3, function () awful.layout.inc(layouts, -1) end),
awful.button({ }, 4, function () awful.layout.inc(layouts, 1) end),
awful.button({ }, 5, function () awful.layout.inc(layouts, -1) end)))
-- Create a taglist widget
mytaglist[s] = awful.widget.taglist(s, awful.widget.taglist.filter.all, mytaglist.buttons)
-- Create a tasklist widget
mytasklist[s] = awful.widget.tasklist(s, awful.widget.tasklist.filter.currenttags, mytasklist.buttons)
-- Create the wibox
mywibox[s] = awful.wibox({ position = "top", screen = s, height = 18 })
-- Widgets that are aligned to the left
local left_layout = wibox.layout.fixed.horizontal()
left_layout:add(first)
left_layout:add(mytaglist[s])
left_layout:add(arrl_pre)
left_layout:add(mylayoutbox[s])
left_layout:add(arrl_post)
left_layout:add(mypromptbox[s])
left_layout:add(first)
-- Widgets that are aligned to the right
local right_layout = wibox.layout.fixed.horizontal()
if s == 1 then right_layout:add(wibox.widget.systray()) end
right_layout:add(first)
right_layout:add(mpdwidget)
--right_layout:add(mailwidget)
right_layout:add(fshome)
right_layout:add(batwidget)
right_layout:add(volumewidget)
right_layout:add(mytextclock)
-- Now bring it all together (with the tasklist in the middle)
local layout = wibox.layout.align.horizontal()
layout:set_left(left_layout)
layout:set_middle(mytasklist[s])
layout:set_right(right_layout)
mywibox[s]:set_widget(layout)
end
-- {{{ Mouse bindings
root.buttons(awful.util.table.join(
awful.button({ }, 3, function () mymainmenu:toggle() end),
awful.button({ }, 4, awful.tag.viewnext),
awful.button({ }, 5, awful.tag.viewprev)
-- {{{ Key bindings
globalkeys = awful.util.table.join(
-- Take a screenshot
-- https://github.com/copycat-killer/dots/blob/master/bin/screenshot
awful.key({ altkey }, "p", function() os.execute("screenshot") end),
-- Tag browsing
awful.key({ modkey }, "Left", awful.tag.viewprev ),
awful.key({ modkey }, "Right", awful.tag.viewnext ),
awful.key({ modkey }, "Escape", awful.tag.history.restore),
-- Non-empty tag browsing
awful.key({ altkey }, "Left", function () lain.util.tag_view_nonempty(-1) end),
awful.key({ altkey }, "Right", function () lain.util.tag_view_nonempty(1) end),
-- Default client focus
awful.key({ altkey }, "k",
function ()
awful.client.focus.byidx( 1)
if client.focus then client.focus:raise() end
end),
awful.key({ altkey }, "j",
function ()
awful.client.focus.byidx(-1)
if client.focus then client.focus:raise() end
end),
-- By direction client focus
awful.key({ modkey }, "j",
function()
awful.client.focus.bydirection("down")
if client.focus then client.focus:raise() end
end),
awful.key({ modkey }, "k",
function()
awful.client.focus.bydirection("up")
if client.focus then client.focus:raise() end
end),
awful.key({ modkey }, "h",
function()
awful.client.focus.bydirection("left")
if client.focus then client.focus:raise() end
end),
awful.key({ modkey }, "l",
function()
awful.client.focus.bydirection("right")
if client.focus then client.focus:raise() end
end),
-- Show Menu
-- awful.key({ modkey }, "w",
-- function ()
-- mymainmenu:show({ keygrabber = true })
-- end),
-- Show/Hide Wibox
-- awful.key({ modkey }, "b", function ()
-- mywibox[mouse.screen].visible = not mywibox[mouse.screen].visible
-- end),
-- On the fly useless gaps change
awful.key({ altkey, "Control" }, "=", function () lain.util.useless_gaps_resize(1) end),
awful.key({ altkey, "Control" }, "-", function () lain.util.useless_gaps_resize(-1) end),
-- Layout manipulation
awful.key({ modkey, "Shift" }, "j", function () awful.client.swap.byidx( 1) end),
awful.key({ modkey, "Shift" }, "k", function () awful.client.swap.byidx( -1) end),
awful.key({ modkey, "Control" }, "j", function () awful.screen.focus_relative( 1) end),
awful.key({ modkey, "Control" }, "k", function () awful.screen.focus_relative(-1) end),
awful.key({ modkey, }, "u", awful.client.urgent.jumpto),
awful.key({ modkey, }, "Tab",
function ()
awful.client.focus.history.previous()
if client.focus then
client.focus:raise()
end
end),
awful.key({ altkey, "Shift" }, "l", function () awful.tag.incmwfact( 0.05) end),
awful.key({ altkey, "Shift" }, "h", function () awful.tag.incmwfact(-0.05) end),
awful.key({ modkey, "Shift" }, "l", function () awful.tag.incnmaster(-1) end),
awful.key({ modkey, "Shift" }, "h", function () awful.tag.incnmaster( 1) end),
awful.key({ modkey, "Control" }, "l", function () awful.tag.incncol(-1) end),
awful.key({ modkey, "Control" }, "h", function () awful.tag.incncol( 1) end),
awful.key({ modkey, }, "space", function () awful.layout.inc(layouts, 1) end),
awful.key({ modkey, "Shift" }, "space", function () awful.layout.inc(layouts, -1) end),
awful.key({ modkey, "Control" }, "n", awful.client.restore),
-- Standard program
awful.key({ modkey, }, "Return", function () awful.util.spawn(terminal) end),
awful.key({ modkey, "Control" }, "r", awesome.restart),
awful.key({ modkey, "Shift" }, "q", awesome.quit),
-- Dropdown terminal
awful.key({ modkey, }, "z", function () drop(terminal) end),
-- Widgets popups
awful.key({ altkey, }, "c", function () lain.widgets.calendar:show(7) end),
awful.key({ altkey, }, "h", function () fshome.show(7) end),
awful.key({ altkey, }, "w", function () yawn.show(7) end),
-- ALSA volume control
awful.key({ }, "XF86AudioRaiseVolume",
function ()
awful.util.spawn(string.format("amixer -c %s set %s 1+", volumewidget.card, volumewidget.channel))
volumewidget.update()
end),
awful.key({ }, "XF86AudioLowerVolume",
function ()
awful.util.spawn(string.format("amixer -c %s set %s 1-", volumewidget.card, volumewidget.channel))
volumewidget.update()
end),
awful.key({ }, "XF86AudioMute",
function ()
awful.util.spawn(string.format("amixer -c %s set %s toggle", volumewidget.card, volumewidget.channel))
--awful.util.spawn(string.format("amixer set %s toggle", volumewidget.channel))
volumewidget.update()
end),
awful.key({ altkey, "Control" }, "m",
function ()
awful.util.spawn(string.format("amixer -c %s set %s 100%%", volumewidget.card, volumewidget.channel))
volumewidget.update()
end),
-- MPD control
awful.key({ }, "XF86AudioPlay",
function ()
awful.util.spawn_with_shell("mpc toggle || ncmpc toggle || pms toggle")
mpdwidget.update()
end),
awful.key({ }, "XF86AudioStop",
function ()
awful.util.spawn_with_shell("mpc stop || ncmpc stop || pms stop")
mpdwidget.update()
end),
awful.key({ }, "XF86AudioPrev",
function ()
awful.util.spawn_with_shell("mpc prev || ncmpc prev || pms prev")
mpdwidget.update()
end),
awful.key({ }, "XF86AudioNext",
function ()
awful.util.spawn_with_shell("mpc next || ncmpc next || pms next")
mpdwidget.update()
end),
-- Copy to clipboard
awful.key({ modkey }, "c", function () os.execute("xsel -p -o | xsel -i -b") end),
-- User programs
awful.key({ modkey }, "w", function () awful.util.spawn(browser) end),
awful.key({ modkey }, "s", function () awful.util.spawn(gui_editor) end),
awful.key({ modkey }, "g", function () awful.util.spawn(graphics) end),
awful.key({ modkey }, "e", function () awful.util.spawn("thunar") end),
-- Prompt
awful.key({ modkey }, "r", function () mypromptbox[mouse.screen]:run() end),
awful.key({ modkey }, "x",
function ()
awful.prompt.run({ prompt = "Run Lua code: " },
mypromptbox[mouse.screen].widget,
awful.util.eval, nil,
awful.util.getdir("cache") .. "/history_eval")
end),
-- {{ Configures Keymap }} --
awful.key({ "Control", "Shift" }, "k",
function()
awful.util.spawn("xmodmap /home/peio/.Xmodmap_Internal")
naughty.notify({ timeout = 8, text = "Keyboard configured for internal." })
end),
awful.key({ "Control", "Shift" }, "l",
function()
awful.util.spawn("xmodmap /home/peio/.Xmodmap_External")
naughty.notify({ timeout = 8, text = "Keyboard configured for external." })
end)
clientkeys = awful.util.table.join(
awful.key({ modkey, }, "f", function (c) c.fullscreen = not c.fullscreen end),
awful.key({ modkey, }, "q", function (c) c:kill() end),
awful.key({ modkey, "Control" }, "space", awful.client.floating.toggle ),
awful.key({ modkey, "Control" }, "Return", function (c) c:swap(awful.client.getmaster()) end),
awful.key({ modkey, }, "o", awful.client.movetoscreen ),
awful.key({ modkey, }, "t", function (c) c.ontop = not c.ontop end),
awful.key({ modkey, }, "n",
function (c)
-- The client currently has the input focus, so it cannot be
-- minimized, since minimized clients can't have the focus.
c.minimized = true
end),
awful.key({ modkey, }, "m",
function (c)
c.maximized_horizontal = not c.maximized_horizontal
c.maximized_vertical = not c.maximized_vertical
end)
-- Bind all key numbers to tags.
-- Be careful: we use keycodes to make it works on any keyboard layout.
-- This should map on the top row of your keyboard, usually 1 to 9.
for i = 1, 9 do
globalkeys = awful.util.table.join(globalkeys,
awful.key({ modkey }, "#" .. i + 9,
function ()
local screen = mouse.screen
local tag = awful.tag.gettags(screen)[i]
if tag then
awful.tag.viewonly(tag)
end
end),
awful.key({ modkey, "Control" }, "#" .. i + 9,
function ()
local screen = mouse.screen
local tag = awful.tag.gettags(screen)[i]
if tag then
awful.tag.viewtoggle(tag)
end
end),
awful.key({ modkey, "Shift" }, "#" .. i + 9,
function ()
local tag = awful.tag.gettags(client.focus.screen)[i]
if client.focus and tag then
awful.client.movetotag(tag)
end
end),
awful.key({ modkey, "Control", "Shift" }, "#" .. i + 9,
function ()
local tag = awful.tag.gettags(client.focus.screen)[i]
if client.focus and tag then
awful.client.toggletag(tag)
end
end))
end
clientbuttons = awful.util.table.join(
awful.button({ }, 1, function (c) client.focus = c; c:raise() end),
awful.button({ modkey }, 1, awful.mouse.client.move),
awful.button({ modkey }, 3, awful.mouse.client.resize))
-- Set keys
root.keys(globalkeys)
-- {{{ Rules
awful.rules.rules = {
-- All clients will match this rule.
{ rule = { },
properties = { border_width = beautiful.border_width,
border_color = beautiful.border_normal,
focus = awful.client.focus.filter,
keys = clientkeys,
buttons = clientbuttons,
size_hints_honor = false } },
{ rule = { class = "URxvt" },
properties = { opacity = 0.99 } },
{ rule = { class = "MPlayer" },
properties = { floating = true } },
{ rule = { class = "Dwb" },
properties = { tag = tags[1][1] } },
{ rule = { class = "Iron" },
properties = { tag = tags[1][1] } },
{ rule = { instance = "plugin-container" },
properties = { tag = tags[1][1] } },
{ rule = { class = "Gimp" },
properties = { tag = tags[1][4] } },
{ rule = { class = "Gimp", role = "gimp-image-window" },
properties = { maximized_horizontal = true,
maximized_vertical = true } },
-- {{{ Signals
-- Signal function to execute when a new client appears.
client.connect_signal("manage", function (c, startup)
-- Enable sloppy focus
c:connect_signal("mouse::enter", function(c)
if awful.layout.get(c.screen) ~= awful.layout.suit.magnifier
and awful.client.focus.filter(c) then
client.focus = c
end
end)
if not startup and not c.size_hints.user_position
and not c.size_hints.program_position then
awful.placement.no_overlap(c)
awful.placement.no_offscreen(c)
end
local titlebars_enabled = false
if titlebars_enabled and (c.type == "normal" or c.type == "dialog") then
-- buttons for the titlebar
local buttons = awful.util.table.join(
awful.button({ }, 1, function()
client.focus = c
c:raise()
awful.mouse.client.move(c)
end),
awful.button({ }, 3, function()
client.focus = c
c:raise()
awful.mouse.client.resize(c)
end)
-- Title in the middle
local middle_layout = wibox.layout.flex.horizontal()
local title = awful.titlebar.widget.titlewidget(c)
title:set_align("center")
middle_layout:add(title)
middle_layout:buttons(buttons)
local layout = wibox.layout.align.horizontal()
layout:set_middle(middle_layout)
awful.titlebar(c,{size=18}):set_widget(layout)
end
end)
-- No border for maximized clients
client.connect_signal("focus",
function(c)
if c.maximized_horizontal == true and c.maximized_vertical == true then
c.border_color = beautiful.border_normal
else
c.border_color = beautiful.border_focus
end
end)
client.connect_signal("unfocus", function(c) c.border_color = beautiful.border_normal end)
-- {{{ Arrange signal handler
for s = 1, screen.count() do screen[s]:connect_signal("arrange", function ()
local clients = awful.client.visible(s)
local layout = awful.layout.getname(awful.layout.get(s))
if #clients > 0 then -- Fine grained borders and floaters control
for _, c in pairs(clients) do -- Floaters always have borders
if awful.client.floating.get(c) or layout == "floating" then
c.border_width = beautiful.border_width
-- No borders with only one visible client
elseif #clients == 1 or layout == "max" then
clients[1].border_width = 0
else
c.border_width = beautiful.border_width
end
end
end
end)
end
function run_once(cmd)
findme = cmd
firstspace = cmd:find(" ")
if firstspace then
findme = cmd:sub(0, firstspace-1)
end
awful.util.spawn_with_shell("pgrep -u $USER -x " .. findme .. " > /dev/null || (" .. cmd .. ")")
end
run_once("nm-applet")
If someone can help me I'll be really thankful.
Best regards,
GeorgiThis is weird behavior that I don't experience with Awesome and Atom. Does this happen only with Atom, or with anything? One aspect of your rc.lua that might cause something like this is the sloppy focusing, this bit here:
-- Enable sloppy focus
c:connect_signal("mouse::enter", function(c)
if awful.layout.get(c.screen) ~= awful.layout.suit.magnifier
and awful.client.focus.filter(c) then
client.focus = c
end
end)
Try disabling that, by commenting it out entirely, and see if the problem persists.
If it only happens with Atom, then maybe Atom conflicts for some reason with this sloppy focusing. -
recently bought the new Belkin Switch 2 KVM gizmo.
Hooked it up to a G5 PPC DVI->VGA & G4 PPC(AGP) VGA. Montior is a Samsung Syncmaster 172T (1024x768 @ 60hz), keyboard & mouse are Apple Pro, both wired. Running 10.4.7
Boot up the G5 & it gets through boot up but then crashes - in respect that although login/startup items continue to load, the mouse is unresponsive & the screen defaults to the generic wallpaper & the screen resolution is not as specified in system prefs (ie. lesser/basic res.)Only way out is to hit the power button til it turns itself off.
Boot up the G4 & it works perfectly. Have reversed the switch cables to check them but no change to the G5 crash. Looks to me like there may be an issue with DVI-VGA and the Switch2.
Has anyone experienced this & more importantly figured out how to solve this issue?
TIA, Andy
G5 Mac OS X (10.4.7)The new Apple keyboard is very underpowered. Even if connected directly to the computer mine won't power my Ipod, so i would say it's likely a power issue.
-
I have had some issues with importing tagged text. In my workflow i get some data converted to tagged text, no problems, special characters are also converted to ASCII entities.
Everything works on my machine, but as soon as it is imported on another machine, the special characters are gone.
I have located the issue, that my entities are lowercase (e.g. ë = <0x00eb>), and by making it uppercase (<0x00EB>) it works.
What can be the difference on the machines? Is it an InDesign thing, or is it a CPU thing? The only difference on the machines are that mine is a Mac with intel processor, and the other is a G5.Oops -- the smiley face in the code should be changed to semicolon close angle (greater than sign). Jim
-
Oracle to SQL server switch mapping issue?
Hi All,
We are switching the DB from Oracle to SQL. As a result our existing mapping seems to create issue while we are trying to INSERT data.
We changed some of the date setting as and also the hasQuot to Yes so when it goes to the SQL server it runs as CONVERT(datetime,'currentDate/time', 120)
Before doing this change we were getting the error
com.microsoft.sqlserver.jdbc.SQLServerException: Conversion failed when converting date and/or time from character string.
Now we are getting the error
com.microsoft.sqlserver.jdbc.SQLServerException: String or binary data would be truncated
Also other date fields are sent with '' like '20150427'
Additionally fields which are Characters are also sent in '' like 'Shaibayan' but when these fields are coming empty at that time the Audit log SQL INSERT shows them as ''' i.e. 3 single quotes instead of '' which we should get.
Thanks,
ShaibayanORA-28545: error diagnosed by Net8 when connecting to an agent
Cause: An attempt to call an external procedure or to issue SQL to a non-Oracle system on a Heterogeneous Services database link failed at connection initialization. The error diagnosed by Net8 NCR software is reported separately.
Action: Refer to the Net8 NCRO error message. If this isn't clear, check connection administrative setup in tnsnames.ora and listener.ora for the service associated with the Heterogeneous Services database link being used, or with 'extproc_connection_data' for an external procedure call.
And a brief search of Metalink gave me a load of forum threads which discuss the same issue.
Edited by: Satish Kandi on Apr 29, 2009 12:19 PM -
Activate or switch device issue
I purchased an Iphone 5 with my upgrade with the intent to turn around and sell it on ebay (same thing I did with my iphone 4 upgrade last time). I received the phone, brought it to the verizon store to have it activated and then get switched back to my Droid...all went well and I even called verizon later to confirm the iphone 5 had been activated on my account. Now my problem is if I go to "activate or switch device" I am still getting a "verify your new device" page with the iphone 5. Shouldn't this have gone away once my iphone 5 had been activated on my account?
With my previous upgrades, once I activated/deactivated the new phone and reactivated my old phone I was free to activate any phone I wished on that number. There are no issues with "activate or switch device" on the other 2 lines on my account, just the line I used to get the upgrade.
Any ideas?Call customer service from a line NOT involved in the switch you want to do - 800-922-0204. Sometimes I've been able to switch devices on my own, but the last few times it's been glitchy, and I've had to call CS. To Verizon's credit, the CS reps have been very helpful and have managed to get the correct device(s) activated in relatively short order.
From the main menu, choose Option 4 (Other) and then say AGENT at the prompt - you should be connected to a live person pretty quickly.
Maybe you are looking for
-
Runtime.exec("Perl Script writing and reading on I/O"), handling Streams
Hi all !! In a first place : sorry for my english if it's not really understandable but I try to do as good as possible ! I'm writing a GUI with Swing that will allow (in one of my multiple tables) the user to run a Perl Script. This Perl Script ask
-
Error while creating part 1 in J1iex ( with reference to stock transport or
Dear All I have the scenario stock transport order inter plants with excise invoice plant A create the sto order and sent that to plant B. and plant B against this order it has done Delivery and excise invoice also created in plant B n
-
Is there a way to transfer visualvoice mail audio files to desktop?
Is there a way to transfer visualvoice mail audio files to desktop?
-
Hi all, I am attempting to output some calendar dates from a database. I have a field called StartDate in the table formatted as mm/dd/yyyy. I'd like to output "future dates" for each month, so I've written this query: <cfquery name="January" datasou
-
Hi all I was wondering if there is any way that i can turn a job ON and OFF through JavaScript in the web page of a production line monitor page... Best regards Tks in advance